Dovecot Alternative: DBMail installieren

Download PDF

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.

Hinterlasse einen Kommentar

1 Kommentar auf "Dovecot Alternative: DBMail installieren"

Benachrichtige mich zu:
avatar
1000
Sortiert nach:   neuste | älteste | beste Bewertung
trackback

[…] 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 […]

wpDiscuz