|
The more I see, the more I know
The more I know, the less I understand |
|
|
||
Login: |
Dovecot, Exim Howto
[Article: HomePage | Diskussion «]
[Edit]1 Ubuntu Exim / Dovecot Howto[Edit]1.1 EinleitungBasierend 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:
* Exim SMTP Server mit Greylisting (all Credits to Struction.de) * wahlweise mit/ohne Smarthost Funktionalität für lokale Mailserver * Virus Check durch ClamAV (all Credits to Struction.de) * Spam Check durch Spamassassin (all Credits to Struction.de) * SQL Userverwaltung per PHP Frontend oder per Shell Script (Todo) * Dovecot IMAP / POP3 Server * Sieve Unterstützung Von der Anleitung auf struction.de
[Edit]1.2 System VorbereitungFür die komplette Installation benötigen wir folgenden Pakete: * exim4-daemon-heavy * dovecot-common, dovecot-imapd, dovecot-pop3d * clamav-daemon, clamav, clamav-freshclam * spamassassin * mysql-server, mysql-client Optionale Pakete (zur Verwaltung via Webinterface) * apache2 (optional) * phpmyadmin (optional) 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 [Edit]1.2.1 User anlegenAuß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! [Edit]1.2.2 IPv6 deaktivierenWieso 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 Bei Ubuntu 9.10: Die Datei /etc/default/grub ändern: GRUB_CMDLINE_LINUX="ipv6.disable=1" Anschließend "update-grub2" ausführen!
[Edit]1.3 Mysql einstellenZunä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 ;
mysql -u root -p exim4 < exim4.sql
[Edit]1.4 EximUnter 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.
[Edit]1.4.1 exim4.conf installierenEine fertige Exim Config für dieses Setup kann man hier herunterladen: /etc/exim4/exim4.conf
Zeile 35: hier werden die mySQL Zugangsdaten eingetragen: hide mysql_servers = MYSQL_HOST/EXIM_DB/EXIM_USER/EXIM_PASS
local_interfaces = 127.0.0.1 : 188.188.188.188
hostlist relay_from_hosts = 127.0.0.1 : 188.188.188.188
tls_certificate = /etc/exim4/exim.crt tls_privatekey= /etc/exim4/exim.key
[Edit]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! [Edit]1.4.3 SSL Zertifikate erstellenEin "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
[Edit]1.4.4 greylist Tabelle löschenDie 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();
[Edit]1.5 DovecotDovecot 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
/etc/dovecot/dovecot.conf /etc/dovecot/dovecot-sql.conf [Edit]1.5.1 Loggingmkdir /var/log/dovecot chown emails:emails /var/log/dovecot [Edit]1.5.2 Anpassungen in /etc/dovecot/dovecot.confZeile 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
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
}
[Edit]1.5.3 Anpassungen in /etc/dovecot/dovecot-sql.confmySQL Zugangsdaten anpassen connect = host=127.0.0.1 dbname=EXIM_DB user=EXIM_USER password=EXIM_PASS
default_pass_scheme = MD5-CRYPT
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
[Edit]1.6 ClamAVMit 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)
[Edit]1.7 SpamassassinMit 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
CRON=1
[Edit]1.8 Webuserverwaltung installierenFür die Userverwaltung nehme ich eine geänderte Version von Postfix Admin Email Admin Software Außerdem müssen ggf. noch die PHP Imap Funkionen nachgerüstet werden: apt-get install php5-imap [Edit]1.8.1 Webuserinterface anpassenDazu die Datei config.inc.php im Root Verzeichnis des Webuserinterfaces anpassen:
Abspeichern. Und die Weboberfläche aufrufen: http://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 http://DOMAIN/emailadmin die Verwaltungsoberfläche aufrufen.
[Edit]1.8.2 Create User DirectoryHier zu muß die Datei /etc/sudoers angepasst werden: www-data HOSTNAME = NOPASSWD: /usr/local/bin/maildirmake.sh
#!/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
[Edit]1.9 Sieve Sieve
Ein Beispiel: require ["fileinto", "reject"];
#
# Email
#
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 SquirrelmailSquirrelmail kann man via apt-get oder durch die aktuellste Version von der Squirrelmail Webseite Configure -ein Menügesteuertes Config Programm- aufrufen: ./configure Im Punkt 2 die Server Einstellungen ändern: 1. Domain : example.com
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
mkdir -p /var/local/squirrelmail/data mkdir -p /var/local/squirrelmail/attach chown -R www-data:www-data /var/local/squirrelmail/ [Edit]1.11 Rechner neustartenWegen 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.
[Edit]1.12 TestenBei 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
[Edit]1.13 Testimonial
|
|