Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mailserver:sieve_sieveshell_und_smartsieve [08.12.2011 21:21. ]
django [Programmstart] Rechtschreibkorrektur
centos:mailserver:sieve_sieveshell_und_smartsieve [20.04.2018 10:34. ] (aktuell)
Zeile 1: Zeile 1:
 +====== Mailfilterung mit SIEVE auf dem IMAP-Server ======
 +Zur Filtern von E-Mails auf IMAP-Server wurde die Programmiersprache **SIEVE** konzipiert - die genaue Spezifikationen erfolgten hierzu im RFC 5228. Das Hauptaugenmerk von **SIEVE** liegt auf Einfachheit,​ Erweiterbarkeit,​ sowie auf Unabhängigkeit von der verwendeten Zugriffsart und Architektur wie auch dem verwendeten Betriebssystem. Sieve wurde spezifiziert,​ um den Usern die Möglichkeit zu beiten, bereits serverseitig auf einfache Art eigene Regeln zur Filterung von E-Mails zu definieren. Sieve-Scripte werden bereits während der Zustellung der eMail am IMAP-Server ausgeführt.\\
 +\\
 +Weitere Hintergrundinformationen finden man unter anderem in dem [[http://​de.wikipedia.org/​wiki/​Sieve|Wikipedia-Artikel zu SIEVE]].
 +===== sieveshell =====
 +Mit Hilf der //​**sieveshell**//,​ aus dem Paket **cyrus-imapd-utils**,​ kann der versierte, technisch begabte Nutzer, seine eigenen Filterregeln einspielen, verwalten und/oder löschen.\\
 +\\
 +Möchte man zum Beispiel automatisch generierte Nachrichten,​ von **sieve** beim Einliefern bei unserem Cyrus-IMAP-Server vorsortieren lassen, so gehen wir wie folgt vor:
 +==== Script erstellen ====
 +Mit dem Editor unserer Wahl erstellen wir uns ein einfaches Textfile, mit den entsprechenden Filterregeln. So sollen Nachrichten von der Adresse //​logwatch@nausch.org//​ in den Unterordner // /​root/​logwatch//,​ Nachrichten,​ die im Betreff das Schlüsselwort "​FaxMaster"​ und die mit dem Schlüsselwort "​PostMaster"​ in den Ordner // /​root/​FaxMaster//​ bzw. // /​root/​PostMaster//​ einsortiert werden.
 +
 +<​code>​$ vim eigene_Filterregel
 +
 +require ["​fileinto"​];​
 +if header :contains "​from"​ ["​logwatch@nausch.org"​] { fileinto "​INBOX/​root/​logwatch";​ }
 +elsif header :contains "​subject"​ "​FaxMaster"​ { fileinto "​INBOX/​root/​FaxMaster";​ }
 +elsif header :contains "​subject"​ "​PostMaster"​ { fileinto "​INBOX/​root/​PostMaster";​ }
 +else { fileinto "​INBOX";​ }</​code>​
 +==== Script hochladen ====
 +Damit wir unser selbst definiertes Script auch nutzen können, müssen wir es auf unseren IMAP-Server hochladen. Hierzu melden wir uns von unserem Nutzer-Login mittels **//​cyradm//​** an unserem IMAP-Server an. Dank unserer **saslauth** Konfiguration,​ erfolgt die Authentifizierung gegen unseren LDAP-server und wir müssen uns kein weiteres Passwort merken.
 +<​code>​[django@nss ~]$ sieveshell imap.nausch.org
 +
 +connecting to imap.nausch.org
 +Please enter your password: ​
 +> </​code>​
 +Nach dem Prompt der **sieveshell** können wir uns mittels des "​**?​**"​ den Befehlsumfang anzeigen lassen.
 +<​code>>​ ?
 +Usage:
 +  sieveshell [-u username] [-a authname] [-r realm] <​server>​
 +
 +help             - this screen
 +list             - list scripts on server
 +put <​filename>​ [<target name>]
 +                 - upload script to server
 +get <​name>​ [<​filename>​]
 +                 - get script. if no filename display to stdout
 +delete <​name> ​   - delete script.
 +activate <​name> ​ - set a script as the active script
 +deactivate ​      - deactivate all scripts
 +quit             - quit</​code>​
 +Mittels put laden wir unser zuvor erstelle Textfile auf den Server hoch.
 +   > put eigene_Filterregel
 +Mittel List bekommen wir all unsere hinterlegten Scripte anzeigen lassen. Auf dem Server können durchwegs mehrere Scripte hinterlegt sein, aber nur **__eines__** ist **aktiv**!
 +<​code>>​ list
 +erster_Versuch ​
 +eigene_Filterregel
 +smartsieve ​ <- active script</​code>​
 +Mittels **activate <​Scriptname>​** aktivieren wir dann unser neues Script; ein **list** zeigt uns unsere Änderung entsprechend an.
 +<​code>>​ activate eigene_Filterregel
 +> list
 +erster_Versuch ​
 +eigene_Filterregel <- active script
 +smartsieve</​code>​
 +Dass diese Vorgehensweise,​ wie Eingangs schon erwähnt, nur für den versierten technischen Nutzer geeignet ist und den WAF((Woman Acceptance Factor)) nicht sonderlich hebt, ist selbstredent. Es muss also eine komfortablere Möglichkeit geschaffen werden. Somit sind wir beim nächsten Thema **smart-sieve** angelangt.
 +===== smart-sieve =====
 +[[http://​smartsieve.sourceforge.net/​|SmartSieve]] ist eine sieve Filter-GUI bzw. Web-Basierte Management-Client. Es ist eine grafische Benutzeroberfläche zum Erstellung und zum Verwaltung von sieve-Skripten auf einem [[http://​cyrusimap.web.cmu.edu/​|Cyrus-IMAP Mailserver]]. Hiermit haben auch nicht technisch versierte Nutzer unseres Cyrus-IMAP-Servers die Möglichkeit,​ Regeln für sieve zu erstellen um e-Mails und Abwesenheitsnachrichten,​ ohne Vorkenntnisse über die sieve-Script-Sprache,​ zu definieren und zu verändern.\\
 +\\
 +{{ :​centos:​smartsieve.png?​600 |SmartSieve Administration }}
 +\\
 +==== Installation ====
 +=== Paketabhängigkeiten ===
 +Vor der eigentlichen Installation von **SmartSive** installieren wir noch drei notwendige PHP-Komponenten (**php-imap**,​ **php-mcrypt** und **php-pecl-idn**).
 +   # yum install php-imap php-mcrypt php-pecl-idn
 +=== Download ===
 +Von der [[http://​sourceforge.net/​project/​showfiles.php?​group_id=62641&​package_id=59336|Projektseite]] auf **//​SourceForge.net//​** laden wir uns die aktuelle Version, hier weiter beschrieben **smartsieve-1.0-RC2.tar.gz**,​ herunter.
 +  # wget http://​ovh.dl.sourceforge.net/​sourceforge/​smartsieve/​smartsieve-1.0-RC2.tar.gz
 +=== Installation ===
 +Das Paket entpacken wir mittels:
 +   # tar xvfz smartsieve-1.0-RC2.tar.gz
 +Das entpackte Verzeichnis verschieben wir nach **/​usr/​share**,​ passen die Nutzerrechte entsprechend an und löschen dann anschließend das Archiv wieder.
 +<​code>#​ mv /​usr/​share/​smartsieve-1.0-rc2 /​usr/​share/​smartsieve
 +# chown -R root:apache smartsieve
 +# rm /​usr/​share/​smartsieve-1.0-RC2.tar.gz </​code>​
 +
 +==== VHost-Definition ====
 +Für unsere Nutzer legen wir einen eigenen V-Host an, über dessen später die Userzugriffe erfolgen sollen. Mit dem Editor unserer Wahl bearbeiten wir also unsere Apache-Konfigdatei **/​etc/​httpd/​conf.d/​vhosts.conf**.
 +  # vim /​etc/​httpd/​conf.d/​vhosts.conf
 +<code apache vhosts.conf>​
 +#
 +# smartsieve.nausch.org
 +#
 +<​VirtualHost *:80>
 +        ServerAdmin webmaster@nausch.org
 +        ServerName smartsieve.nausch.org:​80
 +        ServerAlias smartsieve.nausch.org *.smartsieve.nausch.org
 +        ServerPath /
 +        DocumentRoot "/​usr/​share/​smartsieve"​
 +        <​Directory "/​usr/​share/​smartsieve">​
 +                Options FollowSymLinks
 +                AllowOverride AuthConfig
 +                Order allow,deny
 +                Allow from all
 +        </​Directory>​
 +        AddType application/​x-httpd-php .php
 +        DirectoryIndex index.php
 +        ErrorLog logs/​smartsieve_error.log
 +        CustomLog logs/​smartsieve_access.log combined
 +</​VirtualHost>​
 +</​code>​
 +Mittels eines anschließende **Reload** geben wir unseren neu definierten VHost dem System bekannt.
 +   # service httpd restart
 +==== Konfiguration ====
 +=== servers.php ===
 +Im Verzeichnis **../​smartsieve/​conf/​** befindet sich die Serverdefinition in dem PHP-Script **servers.php**. Diese passen wir unseren Gegebenheiten entsprechend an, so dass nur noch unser IMAP-Server aktiv ist. Den Rest löschen, bzw. Marken wir mittels **/ /** aus.
 +<​code>#​ vim /​usr/​share/​smartsieve/​conf/​servers.php
 +
 +<?php
 +$servers['​cyrus'​] = array(
 +    '​display'​ => 'Cyrus IMAP Server @ nausch.org',​
 +    '​server'​ => '​imap.nausch.org',​
 +    '​sieveport'​ => '​2000',​
 +    '​imapport'​ => '​143/​imap/​notls',​
 +    '​maildomain'​ => '​nausch.org'​
 +);
 +?></​code>​
 +=== config.php ===
 +Die eigentliche Konfiguration von SmartSieve erfolgt dann über die Konfigurationsdatei **config.php**,​ welche ebenfalls im Verzeichnis **../​smartsieve/​conf/​** liegt. Auch diese bearbeiten wir mittels **vi**.
 +   # vim /​usr/​share/​smartsieve/​conf/​config.php
 +Zur Dokumentation haben sind nachfolgend nur die aktiven Zeilen ausgegeben.
 +<code php>
 +<?php
 +$default->​language = "​de_DE";​
 +$default->​charset = "​ISO-8859-1";​
 +$default->​proxy_authz_users = array();
 +$default->​user_select_lang = true;
 +$default->​user_select_server = false;
 +$default->​user_supply_scriptfile = false;
 +$default->​allow_multi_scripts = false;
 +$default->​scriptfile = '​smartsieve';​
 +$default->​allow_write_unrecognised_scripts = true;
 +$default->​allow_change_mode = false;
 +$default->​allow_regex = false;
 +$default->​allow_custom = true;
 +$default->​notify_methods = array('​mailto',​ '​sms'​);​
 +$default->​use_forward_mail_interface = true;
 +$default->​use_vacation_interface = true;
 +$default->​use_whitelist = true;
 +$default->​spam_filter = array('​header'​=>'​X-Spam-Score',​
 +                              '​matchStr'​=>'​^[0-9]',​
 +                              '​matchType'​=>':​regex',​
 +                              '​not'​=>​false);​
 +$default->​websieve_auto_matches = false;
 +$default->​session_name = '​SmartSieve';​
 +$default->​cookie_domain = $_SERVER['​SERVER_NAME'​];​
 +$default->​page_title = '​SmartSieve';​
 +$default->​login_page_heading = '​Willkommen beim SmartSieve-Server bei nausch.org';​
 +$default->​initial_page = '​main.php';​
 +$default->​vacation_days = '​1';​
 +$default->​max_vacation_days = '​30';​
 +$default->​max_field_chars = 500;
 +$default->​max_textbox_chars = 50000;
 +$default->​update_activate_script = false;
 +$default->​return_after_update = false;
 +$default->​socket_timeout = 4;
 +$default->​crypt_lib = '​null';​
 +$default->​crypt_args = array();
 +$default->​sasl_mech = '​plain';​
 +$default->​logging = true;
 +$default->​logging_level = LOG_DEBUG;
 +$default->​logging_method = '​syslog';​
 +$default->​logging_facility = '​LOG_MAIL';​
 +$default->​logging_ident = '​smartsieve';​
 +$default->​logging_args = array();
 +?>
 +</​code>​
 +==== Programmstart ====
 +Mit dem Webbrowser unserer Wahl öffnen wir die [[http://​sieve.nausch.org|Eingangsseite]].
 +
 +{{ :​centos:​smartsieve_2.png |SmartSieve-Anmeldeschirm}}
 +
 +Nach erfolgter Anmeldung befinden wir uns im Hauptbildschirm,​ in der wir nun unsere benutzerindividuellen Regeln anlegen, verwalten und löschen können. Dies erfolgt hierbei Benutzerintuitiv und bedarf keiner großartigen Beschreibung mehr - der **WAF** ist somit gesichert! LOL 
 +
 +{{ :​centos:​smartsieve_3.png?​600 |SmartSiev-Haupbildschirm}}
 +
 +
  
  • centos/mailserver/sieve_sieveshell_und_smartsieve.txt
  • Zuletzt geändert: 20.04.2018 10:34.
  • (Externe Bearbeitung)