Dovecot Alternative: DBMail installieren
Ich beschreibe hier die Installation des DBMail IMAP Servers auf Ubuntu Server 14.04 LTS. Dieser Mailserver ist OpenSource und kann eine Alternative zu Dovecot sein. DBMail bringt auch Verwaltungsbefehle z.B. dbmail-users, dbmail-util für die Linux Konsole mit, die eine relativ einfache Verwaltung von DBMail ermöglichen. DBMail bietet IMAP, POP, LMTP, Quota, einen Sieve Dienst und unterstützt TLS.
Die hier beschriebene Konfiguration ist natürlich dem eigenen Bedarf anzupassen. Ich gehe hier von umfangreichen Linux Kenntnissen und einen funktionierenden Postfix SMTP Server aus! Einen einfach konfigurierten Postfix Server bekommt Admina am schnellsten, in dem folgender Befehl auf der Konsole ausgeführt wird: dpkg-reconfigure postfix.
Diese Anleitung, für eine DBMail Installation und Konfiguration, kann in drei Stunden umgesetzt werden – erfahrungsgemäss wird es aber große Nervereien geben, die den Auftrag um einen Tag verlängern. Speziell saslauthd kann richtig Spass machen… Einen Test ist aber DBMail auf jeden Fall wert.
Als ersten Schritt legen wir uns die DBMail Installationsquellen im System ab. Dazu erstellen wir die Datei /etc/apt/source.list.d/dbmail.list mit folgenden Inhalt:
deb http://debian.nfgd.net/debian/ wheezy main
und führen die folgenden Befehle aus:
aptitude update aptitude search dbmail aptitude install dbmail
Jetzt erstellen wir eine Datenbank und einen Datenbank- User:
mysql -u root -p create database dbmail; grant all on dbmail.* to dbmailuser@localhost identified by 'dbmailpw'; exit;
Nach dem Anlegen der Datenbank sollten wir die Tabellen für DBMail einpflegen. Dazu führen wir auf der Konsole folgenden Befehl aus:
zcat /usr/share/doc/dbmail/examples/create_tables.mysql.gz | mysql –u dbmail dbmail –p
Die eingepflegten Tabellen prüfen wir gleich:
mysql -u root -p use dbmail; show tables; exit;
Jetzt müssen wir DBMail konfigurieren, dass es die erstellte Datenbank nutzt. Öffne /etc/dbmail/dbmail.conf und mache deine Anpassungen für die folgenden Optionen:
dburi = mysql://dbmailuser:dbmailpw@localhost:3306/dbmail authdriver = sql # Beachte! Nicht 'mysql' eintragen! postmaster bindip tls_ # Beachte! Hier muss jeweils der Pfad zu deinen Zertifikaten eingetragen werden! tls_ciphers = ALL:!EXPORT:!aNULL:!eNULL:!SSLv2:!MD5:!RC4 hash_algorithmus = SHA1 # Beachte! Hier geht es nicht um die Verschlüsselung, sondern um die Erstellung der Message-ID! [IMAP] tls_port = 993 # Beachte! Ich deaktiviere immer port 143!
In /etc/default/dbmail legen wir fest, welche Dienste von DBMail gestartet werden sollen, in dem Du das Kommentarzeichen entfernst:
START_IMAPD=true START_LMTPD=true START_SIEVE=true
Der Eintrag START_SSL ist obsolet und hat keine Bedeutung mehr! Führe jetzt folgenden Befehl auf der Konsole aus:
service dbmail start
und prüfe auf der Konsole, ob alles korrekt funktioniert:
ps -ax | grep dbmail (Sollte die 3 aktivierten DBMail Dienste anzeigen) less /var/log/mail.err (Hier zeigen sich Fehler von DBMail) less /var/log/auth.log (Hier zeigen sich Fehler von saslauthd) less /var/log/syslog (Hier zeigen sich Fehler mit TLS von DBMail)
Sollten in den logs Fehler verzeichnet sein, kannst Du die noch ignorieren, weil die Konfiguration noch nicht abgeschlossen ist.
Nun legen wir z.B. den Email User Otto an. Schöner Name! Dazu sind immer diese zwei Befehle auf der Konsole notwendig:
dbmail-users -a otto -p md5-digest -w superpasswort dbmail-users -c otto -s otto@meinedomäne.de
Die Option -p md5-digest ist nur notwendig, wenn Admina den Usern ermöglichen will, ihr Mailpasswort über Horde zu wechseln: Das md5-hex in der ~/horde/passwd/config/backend.local.php und das md5-digest aus dem dbmail-users Befehl ist kompatibel!
Jetzt müssen wir DBMail mit Postfix verheiraten. Passe /etc/postfix/main.cf entsprechend an:
virtual_transport = dbmail-lmtp:127.0.0.1:24 virtual_mailbox_domains = mysql:/etc/postfix/sql/sql-virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/sql/sql-virtual_mailbox_maps.cf mydestination = localhost, localhost.localdomain, localhost
Als mydestination steht nicht die öffentliche Domäne! Erstelle die notwendigen Ordner und die fehlenden .cf Dateien.
Die sql-virtual_mailbox_domains.cf enthält folgenden Text:
user = dbmailuser password = dbmailpw hosts = 127.0.0.1 (Beachte! host unbedingt als IP und nicht als localhost eintragen!) dbname = dbmail query = SELECT DISTINCT 1 FROM dbmail_aliases WHERE SUBSTRING_INDEX(alias, '@', -1) = '%s';
Die sql-virtual_mailbox_maps.cf enthält folgenden Text:
user = dbmailuser password = dbmailpw hosts = 127.0.0.1 (Beachte! host unbedingt als IP und nicht als localhost eintragen!) dbname = dbmail query = SELECT 1 FROM dbmail_aliases WHERE alias='%s';
Postfix benutzt in Verbindung mit DBMail den saslauthd zur Authorisierung der Mail- User. Daher müssen wir den saslauthd installieren, in der Postfix Konfiguration einbinden:
aptitude install sasl2-bin libsasl2-modules
und die Datei /etc/postfix/sasl/smtpd.conf mit folgenden Inhalt erstellen:
mech_list: PLAIN LOGIN # Beachte! saslauthd kann nur Plain und Login - deswegen ja TLS! pwcheck_method: saslauthd
Zusätzlich muss die /etc/default/saslauthd angepasst werden:
START=yes OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" # Beachte! Diese Anpassung ist notwendig wenn der Eintrag in der /etc/postfix/master.cf folgendermaßen # aussieht: smtp inet n - - - - smtpd also der smtp Dienst ge-chrootet läuft!
Dazu müssen noch folgende Befehle auf der Konsole ausgeführt werden, damit die Berechtigungen auf den genannten Ordner passen:
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd adduser postfix sasl
Und letztlich wird der saslauthd in der Postfix Konfiguration /etc/postfix/main.cf aktiviert:
smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_tls_security_options = noanonymous smtpd_sasl_authenticated_header = yes
Beachte unbedingt, dass sasl auch in deinen Restriktionen eingepflegt werden muss, wie zum Beispiel hier:
smtpd_recipient_restrictions = reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, warn_if_reject check_policy_service inet:[127.0.0.1]:12525, check_policy_service unix:private/policyd-spf
oder wenn Du submission (port 587) in der /etc/postfix/master.cf aktiviert hast:
submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o tls_preempt_cipherlist=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
Zum Abschluss sollten folgende Befehle auf der Konsole ausgeführt werden, damit die zuständigen Dienste (durch-)starten:
service mysql restart service postfix restart service saslauthd restart service dbmail restart
Außerdem ist es vorteilhaft, dem neu erstellten User – also Otto – gleich eine Email von einem anderen Mailaccount zu senden. Danach sind die Logs – wie oben beschrieben – zu prüfen und ein dbmail-util -a schadet auch nicht.
Viel Spass mit der Dovecot Alternative DBMail.
[…] verlinkt, die mir aber im nachhinein nicht mehr gefällt. Deswegen habe ich eine eigene Anleitung erstellt und hoffe, dass diese mehr klarheit vermittelt und mehr Fehler […]