|
The more I see, the more I know
The more I know, the less I understand |
|
|
||
Login: |
Ubuntu Exim / Dovecot Howto1.1 Einleitung Basierend auf dem sehr gutem Exim/Dovecot Howto von struction.de stelle ich hier einmal eine komplette Konfiguration für einen Mailserver basierend auf Exim, Dovecot, mysql für Ubuntu zur Verfügung. Das Howto ist unter folgenden Linux Versionen getestet:
Getestet unter Ubuntu Karmic !
Features:
Von der Anleitung auf struction.de unterscheidet sich dieses Howto durch die Ausrichtung auf Ubuntu 9.10, eine Weboberfläche für die Userverwaltung und kleinere Anpassung und Korrekturen. Dennoch wäre das Howto ohne die Vorarbeit von struction.de nicht möglich gewesen
2.1) Pakete Für die komplette Installation benötigen wir folgenden Pakete:
Optionale Pakete (zur Verwaltung via Webinterface):
Nun installieren wir die Pakete: apt-get install exim4-daemon-heavy dovecot-common dovecot-imapd dovecot-pop3d \
clamav-daemon clamav clamav-freshclam spamassassin mysql-server mysql-client \ phpmyadmin apache2
2.2 User anlegen Außerdem richten wir noch zwei User ein: Einmal für Spamassassin und einmal für die Mails. Letztendlich kann jedes Verzeichnis bzw. Usernamen genommen werden, ich wähle /var/mails und den User "mails" für die Emails und den User "spamd" für Spamassassin. groupadd spamd useradd -g spamd -s /bin/false -d /home/spamd spamd mkdir /home/spamd chown spamd:spamd /home/spamd groupadd emails useradd -g emails -s /bin/false -d /var/mails emails mkdir /var/mails chown emails:emails /var/mails
Nun merken wir uns noch, welche User- und Gruppen ID der User hat: # grep emails /etc/passwd emails:x:1002:1002:,,,:/var/mails/:/bin/false In unserem Fall also die User-ID 1002 und die Gruppen ID 1002. Merken!
2.3 IPv6 deaktivieren Wieso IPv6 deaktivieren ? Per Default hat Ubuntu IPv6 aktiviert. Das bedeutet aber, daß man jede lokale IPv6 Adresse bei den Server Diensten mit angeben und konfigurieren muss. so muss z.B. exim bei einer vorhandenen IPv6 Konfiguration auch auf der IPv6 Adresse lauschen, weil sonst z.B. fetchmail keine Emails zustellen kann. Da es zumindest beim Autor keine Rolle spielt, ob IPv6 Adressen vorhanden sind, wird IPv6 komplett deaktiviert. Macht das Leben einfacher und sorgt für weniger Probleme. in /etc/hosts die IPv6 Adressen deaktivieren Bei Ubuntu < 9.10 : /etc/modprobe.d/blacklist folgende Zeile eintragen: blacklist ipv6
GRUB_CMDLINE_LINUX="ipv6.disable=1" Anschließend "update-grub2" ausführen!
3) Mysql einstellen3.1 MysQL Zunächst legen wir einen MySQL- User an für die Email Userverwaltung in mySQL: mysql -u root -p (mit mySQL verbinden) create database exim4; grant usage on *.* to exim_user@localhost identified by 'exim_pass'; grant all privileges on exim4.* to exim_user@localhost ;
Die passende mySQL Struktur kann man hier herunterladen. Anschließend wie folgt importieren: mysql -u root -p exim4 < exim4.sql 1.4 Exim Unter Ubuntu (basierend auf Debian) ist die Config auf dem ersten Blick verwirrend, da es bei Debian verschiedene Möglichkeiten gibt, wie Exim verwaltet wird. Sofern man Debian seine Config pflegen lassen möchte, so kann man Einstellungen in "/etc/exim4/update-exim4.conf" vornehmen und dann mit 'dpkg-reconfigure exim4-config' übernehmen. Siehe auch /usr/share/doc/exim4-base/README.Debian.g für mehr Details. Wenn jedoch unter Ubuntu/Debian eine /etc/exim4/exim4.conf Datei vorhanden ist, dann wird diese als lokale Config genommen und der gesamte Automatismus ignoriert. Dies ist die Möglichkeit die ich bevorzuge und in diesem Howto auch einsetze.
]1.4.1 exim4.conf installieren Eine fertige Exim Config für dieses Setup kann man hier herunterladen: /etc/exim4/exim4.conf
Anschließend muss man die notwendigen Änderungen vornehmen: Zeile 35: hier werden die mySQL Zugangsdaten eingetragen: hide mysql_servers = MYSQL_HOST/EXIM_DB/EXIM_USER/EXIM_PASS
Zeile 62: hier die lokalen Adressen, auf die Exim lauschen soll, eintragen. Das sind üblicherweise localhost sowie die Adressen vom Server. local_interfaces = 127.0.0.1 : 188.188.188.188
Zeile 84: hier werden die Adressen eingetragen, von den Exim ohne jedes Passwort Emails entgegen nehmen soll. In unserem Beispiel ist das identisch der lokalen Adressen: hostlist relay_from_hosts = 127.0.0.1 : 188.188.188.188
Zeile 104 und 105: hier werden die SSL Zertfikate eingetragen. Diese werden später erstellt. tls_certificate = /etc/exim4/exim.crt tls_privatekey= /etc/exim4/exim.key
Zeile 722ff: wenn Exim als Smarthost arbeiten soll, dann müssen hier die Einstellungen vorgenommen werden. Ein Smarthost mag dann notwendig sein, wenn Exim im lokalen Netz arbeitet und die Emails zunächst einen anderen Mailserver zugestellt werden sollen. Die Voreinstellung ist direkte Zustellung der Emails ohne Smarthost!
1.4.2 Alias Datei setzen Über die Systemeigene Alias Datei, kann man noch unabhängig von der SQL Datenbank Aliase verwalten. Das eignet sich hervoragend um z.B. Servermitteilungen die z.B.an root gesendet werden, zu verwalten. touch /etc/mail/aliases Die Datei sieht z.B. so aus: root user@hier_kommt_meine_domain.de Nach Änderungen an der Datei wird dann das Programm "newaliases" ausgeführt!
1.4.3 SSL Zertifikate erstellen Ein "wenig" versteckt findet man unter Ubuntu ein Programm zum erstellen der Exim SSL Zertifikate. Folgendes Programm starten: /usr/share/doc/exim4-base/examples/exim-gencert
1.4.4 greylist Tabelle löschen Die Greylist Tabelle füllt sich nach und nach. Daher ist ein regelmäßiges löschen angebracht. Das kann man entweder per cronjob durchführen oder ab mySQL 5.1.x auch per mySQL Eventsteuerung. Dazu muß man zunächst die mySQL Events in der my.cnf von mySQL aktivieren: # Event event_scheduler = 1 Nun kann man in die mySQL Datenbank folgendes Event setzen: DROP EVENT `clear_greylist`; CREATE EVENT `clear_greylist` ON SCHEDULE EVERY 300 SECOND STARTS '2009-11-07 09:37:16' ON COMPLETION NOT PRESERVE ENABLE DO delete from greylist where (FROM_UNIXTIME(first_seen)+INTERVAL 2 DAY) < NOW();
1.5 Dovecot Dovecot ist ein sehr guter Imap und Pop3 Server mit einer sehr guten Dokumentation. Die Installation ist eigentlich relativ einfach, wir müssen nur kleinere Anpassungen vornehmen. Die fertige Konfigurationsdateien (eine für Dovecot, eine für die SQL Anbindung) kann man sich hier herunterladen. Im weiteren werde ich mich darauf beziehen. Die Verzeichnisstruktur basiert auf den Vorschlägen der Dovecot Anleitung
Die Konfigurationsdateien liegen hier: /etc/dovecot/dovecot.conf
1.5.1 Logging mkdir /var/log/dovecot chown emails:emails /var/log/dovecot
1.5.2 Anpassungen in /etc/dovecot/dovecot.conf Zeile 42: welche Dienste sollen gestartet werden? protocols = imap imaps pop3 pop3s managesieve
Zeile 70: sollen auch bei unverschlüsselter Verbindung Klartext Passwörter akzeptiert werden ? disable_plaintext_auth = no
Zeile 117: SSL Zertifikate. Im Beispiel nehme ich die gleichen wie für Exim. ssl_cert_file = /etc/exim4/exim.crt ssl_key_file = /etc/exim4/exim.key
Zeile 235: Wo liegt das Mail Verzeichnis. DIese Angabe muß mit denen bei Exim übereinstimmen. mail_location = maildir:~/Mails
Zeile 701ff: Sieve Anpassungen ? sieve=~/.dovecot.sieve sieve_storage=~/sieve
Zeile 729ff: LDA Anpassungen ? protocol lda { postmaster_address = postmaster@DOMAIN_ANGABE (!) #hostname = #log_path = /var/log/sieve/sieve.log #info_log_path = /var/log/sieve/sieve2.log #debug=yes deliver_log_format = msgid=%m: %$f %s %$ }
Zeile 835ff: Debug Ausgabe aktivieren ? auth_debug = no auth_debug_passwords = no
Zeile 877ff: SQL Userverwaltung # SQL database passdb sql { # Path for SQL configuration file args = /etc/dovecot/dovecot-sql.conf }
Zeile 884ff: SQL Userverwaltung # SQL database userdb sql { # Path for SQL configuration file args = /etc/dovecot/dovecot-sql.conf }
1.5.3 Anpassungen in /etc/dovecot/dovecot-sql.conf mySQL Zugangsdaten anpassen connect = host=127.0.0.1 dbname=EXIM_DB user=EXIM_USER password=EXIM_PASS
Passwort Format? Ich nehme in diesem Beispiel MD5-Crypt, also "versalzende MD5-Hashes". Das Passwort liegt also nicht im Klartext in der Datenbank und kann auch schlecht durch Rainbow Tabellen ermittelt werden. default_pass_scheme = MD5-CRYPT
Hier werden nun die beiden SQL Abfragen für User- und Passwort Abfrage eingerichtet. Die numerischen ID für User und Gruppen müssen dem System angepasst werden (also unter welchem User die Emails gespeichert werden). password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT maildir as home, 1002 AS uid, 1002 AS gid FROM \\ mailbox WHERE username = '%u' and active="1"; # Achtung: Die user_query muss eine Zeile sein
1.6 ClamAV Mit Clamav werden eingehende Emails auf Viren überprüft. Zunächst fügen wir den User "clamav" der Gruppe "Exim-Debian" zu, damit Clamav auf die Emails zugreifen kann: usermod -a -G Debian-exim clamav
Dann müssen wir die Apparmor Sicherheitseinstellungen noch anpassen, damit clamav überhaupt in das Verzeichnis schreiben darf. /etc/apparmor.d/usr.sbin.clamd # For use with exim /var/tmp/** krw, /var/spool/exim4/** krw, Anschließend apparmor neu starten (/etc/initd.d/apparmor restart)
1.7 Spamassassin Mit Spamassassin wird bereits beim SMTP Prozess auf Spam überprüft und die Email wird je nach Spam-Score abgelehnt (hoher Spam-Score, wird berechnet aus BUGBUGBUG), per Greylisting auf später verschoben (mittlerer Spam-Score, größer 10) oder direkt zugestellt (niedriger Spam-Score). Um dieses flexibel zu halten, ist in der SQL Datenbank eine individuelle Spam-Score Einstellung möglich. /etc/default/spamassassin Zeile 8: Anstellen ENABLED=1
Zeile 31: Automatische Updates der Spamassassin Regeln CRON=1
1.8 Webuserverwaltung installieren Für die Userverwaltung nehme ich eine geänderte Version von Postfix Admin, einem exzellenten Tool für Postfix mit mysql. Einfach das Tar-File runterladen und entpacken. Außerdem müssen ggf. noch die PHP Imap Funkionen nachgerüstet werden: apt-get install php5-imap
1.8.1 Webuserinterface anpassen Dazu die Datei config.inc.php im Root Verzeichnis des Webuserinterfaces anpassen:
Zeile 31: Setup Passwort hinterlegen: dazu kommen wir später !
Zeile 49: mysql Parameter anpassen
Zeile 76: Postmaster Adresse hinterlegen
Zeile 124ff: default Aliase für die Domains hinterlegen
Zeile 147: Eckdaten einer Domain. Die Begrenzen gelten für Domain Administratoren, nicht für den Super User
Zeile 310: Wenn das Homeverzeichnis eines User nicht existiert, werden keine Email zugestellt. Daher erstellen wir unmittelbar nach dem erzeugen der Email die richtige Verzeichnisstruktur. Abspeichern. Und die Weboberfläche aufrufen: DOMAIN/emailadmin/setup.php Nun trägt man unten ein Superuser Password ein und erhält dafür einen MD5 Hash Key. Diesen trägt man nun in die Config Datei, Zeile 31 ein. Anschließend ruft man wieder die Weboberfläche auf, trägt bei "Setup password" das eben genannte Passwort ein und erstellt anschließend einen Admin user. Nun kann man über DOMAIN/emailadmin die Verwaltungsoberfläche aufrufen.
1.8.2 Create User Directory Hier zu muß die Datei /etc/sudoers angepasst werden: www-data HOSTNAME = NOPASSWD: /usr/local/bin/maildirmake.sh
Und die Datei /usr/local/bin/maildirmake.sh sieht wie folgt aus: #!/bin/bash set -e mail_home="/var/mails/" mkdir -p "$mail_home/$3" chown -R emails:emails "$mail_home/$3" chmod -R 700 "$mail_home/$3" Die Datei bekommt dann die Rechte "4755", also chmod 4755 /usr/local/bin/maildirmake.sh
1.9 Sieve Sieve ist eine Möglichkeit direkt bei der Email Zustellung die Emails zu sortieren. So kann man z.B. Mails von Mailinglisten gleich in das passende Verzeichnis schieben, ohne daß auf Client Seite hier Filter nötig werden.
Die installierte Config unterstützt Sieve bereits. Für Thunderbird muß man ein Plugins nachinstallieren. Unter "Extras -> Sieve Nachrichtenfilter" kann man nun seine Filter einstellen. Wichtig: Eventuelle Verzeichnissturen werden durch ein Punkt "." unterteilt, also "INBOX.Mailinglisten.Email.Dovecot" ergibt "/Mailinglisten/Email/Dovecot/". Neu erstellte Verzeichnisse werden automatisch abonniert. Ein Beispiel: require ["fileinto", "reject"]; # # if header :contains "List-ID" "courier-users.lists.sourceforge.net" { fileinto "INBOX.Mailinglisten.Email.Courier"; stop; } elsif header :contains "List-ID" "dovecot.dovecot.org" { fileinto "INBOX.Mailinglisten.Email.Dovecot"; stop; } elsif address :is ["From", "To"] "support@stonki.de" { fileinto "INBOX.stonki"; stop; } [Edit]1.10 Squirrelmail Squirrelmail kann man via apt-get oder durch die aktuellste Version von der Squirrelmail Webseite. Beim direkten Installieren einfach von der Webseite runterladen und in das Webverzeichnis kopieren. Configure -ein Menügesteuertes Config Programm- aufrufen: ./configure Im Punkt 2 die Server Einstellungen ändern: 1. Domain : example.com
Im Punkt 3 die Folder Einstellungen ändern. Sonst gibt es z.B. Probleme mit dem Zusammenspiel mit Thunderbird! 3. Trash Folder : Trash 4. Sent Folder : Sent 5. Drafts Folder : Drafts In Punkt 4 sehen wir noch die Verzeichnisse für Anhänge sowie zwei nette Einstellungen für die Thread Darstellung in Squirrelmail: 1. Data Directory : /var/local/squirrelmail/data/ 2. Attachment Directory : /var/local/squirrelmail/attach/ .... 10. Allow server thread sort : true 11. Allow server-side sorting : true
Bitte erstellen und www-data zuverweisen: mkdir -p /var/local/squirrelmail/data mkdir -p /var/local/squirrelmail/attach chown -R www-data:www-data /var/local/squirrelmail/
1.11 Rechner neustarten Wegen der Änderungen der Gruppen sowie bei den Modulen empfiehlt sich ein Neustart des Systems. Bei mehreren Installationen basierend auf diesem Howto haben sich eine Menge vermeintlicher Probleme nach dem ersten Neustart in Luft aufgelöst.
1.12 Testen Bei Probleme stehen mehrere Logs zur Verfügung: /var/log/exim/mainlog /var/log/mails.log /var/log/dovecot/dovecot.log /var/log/lda_info.log
Viel Spaß !
1.13 Testimonial 28. Januar 2010 : Installation auf www.stonki.de 08. Januar 2010 : Installation auf www.2wheel-distribution.com 01. November 2009 : Installation auf www.svenna.de |
|