[postfix-users] User-Authentifizierung Postfix / Dovecot
Hallo,
wir betreiben hier einen Postfix-Server als Proxy, der dann die Mails weiterrelayed an einen internen Postfix auf dem dann als IMAP-Server noch ein Dovecot läuft. Das Relayen funktioniert auch soweit. Für den Dovecot habe ich eine passwd-Datei angelegt, gegen die sich die User authentifizieren und ihr Home-Dir zugewiesen bekommen. Der interne Postfix stellt die Mails via dovecot-lda an den Dovecot zu. Klappt auch. Dabei macht der dovecot-lda eine user-verifizierung, auch gegen die genannte passwd-Datei. Nun habe ich folgendes Problem: Die User haben mehrere, verschiedene E-Mail-Adressen. Um das ganze nun doch übersichtlich zu halten möchte ich gerne in der passwd-Datei für jeden User nur einen Eintrag drin haben (zur Anmeldung für IMAP), und die verschiedenen e-Mail-Adressen irgendwie über aliase realisieren.
Ist dann hier der richtige weg, das über virtual_alias_maps zu machen?
Postfix ist Version 2.6.1
Ergebnis von postconf -n: alias_database = hash:/etc/postfix/aliases alias_maps = hash:/etc/postfix/aliases config_directory = /etc/postfix daemon_directory = /usr/lib/postfix mydestination = localhost myhostname = hermes.domain1.de mynetworks = 127.0.0.0/8 192.168.2.0/24 192.168.1.7/32 192.168.1.14/32 myorigin = $mydomain relayhost = [192.168.1.14] setgid_group = maildrop virtual_alias_maps = hash:/etc/postfix/virtual_aliases virtual_mailbox_domains = domain1.de domain2.de virtual_mailbox_maps = hash:/etc/postfix/virtual virtual_transport = dovecot
Ergebnis von doveconf -n: # 2.0.3: /usr/local/etc/dovecot/dovecot.conf # OS: Linux 2.6.31.5-0.1-desktop x86_64 openSUSE 11.2 (x86_64) auth_debug = yes auth_debug_passwords = yes auth_verbose = yes auth_verbose_passwords = plain debug_log_path = /var/log/dovecot-debug.log disable_plaintext_auth = no info_log_path = /var/log/dovecot-info.log log_path = /var/log/dovecot.log mail_location = mdbox:~/mdbox mail_plugins = acl quota namespace { hidden = no inbox = yes location = prefix = separator = / type = private } namespace { list = yes location = maildir:/home/vmail/public:LAYOUT=fs:INDEX=~/public prefix = Public/ separator = / subscriptions = no type = public } passdb { args = username_format=%u /etc/passwd.dovecot driver = passwd-file } plugin { acl = vfile:/home/vmail/conf.d/acls:cache_secs=300 quota = dict:user::file:%h/mdbox/dovecot-quota quota_rule = *:storage=1GB quota_rule2 = Trash:storage=+10%% sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_global_dir = /home/vmail/conf.d/sieve } protocols = imap lmtp service auth-worker { user = doveauth } service auth { unix_listener auth-userdb { group = vmail mode = 0600 user = vmail } user = doveauth } service imap-login { inet_listener imap { address = 192.168.2.31 port = 143 } inet_listener imaps { port = 0 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } ssl = no userdb { args = username_format=%u /etc/passwd.dovecot driver = passwd-file } verbose_proctitle = yes verbose_ssl = yes protocol lmtp { mail_plugins = $mail_plugins sieve } protocol imap { mail_plugins = $mail_plugins imap_acl imap_quota mail_log notify }
Mit freundlichen Grüßen
Andreas Thomsen
Hallo,
Am 24.09.2010 15:21 schrieb Andreas Thomsen:
Klappt auch. Dabei macht der dovecot-lda eine user-verifizierung, auch gegen die genannte passwd-Datei.
aus eigener Erfahrung würde ich empfehlen, soetwas wie posfix-admin und z.B. ein mysql-backend einzusetzen, wenn man keinen LDAP zur Verfügung hat.
Auch bei kleinen Setups ist dies angebracht, weil man auch mal eben das Anlegen von Mailboxen oder aliases deligieren kann.
Ausserdem schleichen sich nicht so leicht Fehler ein, auch wenn man natürlich alles über passwd-Dateien und postfix maps machen kann.
Das ist am Ende wesentlich nervenschonender, als postfix und dovecot manuell synchron zu halten. Irgendwann vergisst man bestimmt das reload oder postmap und hat inkonsistenzen...
Hier wäre auf die Schnelle ein Ergebnis: http://wiki.dovecot.org/HowTo/DovecotLDAPostfixAdminMySQL
Grüße, Florian
Hallo Florian, hallo Andreas, hallo Leute,
Am Freitag, 24. September 2010 schrieb Florian Streibelt:
Hier wäre auf die Schnelle ein Ergebnis: http://wiki.dovecot.org/HowTo/DovecotLDAPostfixAdminMySQL
Die Seite sieht leicht ;-) veraltet aus. Zu sehen ist das nicht nur an den Versionsnummern, sondern auch am Inhalt - es fehlen beispielsweise die MySQL-Maps für Alias-Domains und es werden längst obsolete Patches empfohlen.
Die Doku von Postfixadmin ist wesentlich aktueller (siehe die Dateien POSTFIX_CONF.TXT [1] und DOVECOT.TXT) und dürfte die bessere Vorlage sein. (Anderenfalls bitte Bugreport oder Verbesserungsvorschläge an mich ;-)
Und falls jemand Lust, das Dovecot-Wiki mal upzudaten... ;-)
Gruß
Christian Boltz
[1] Die angehängte Version der POSTFIX_CONF.txt ist ein kleines Experiment. Sie ist ausführbar ("bash POSTFIX_CONF.txt") und generiert dann die mysql_*.cf Maps. Feedback zu dieser Idee ist willkommen ;-)
Am 24.09.2010 22:59 schrieb Christian Boltz:
Die Seite sieht leicht ;-) veraltet aus. Zu sehen ist das nicht nur an den Versionsnummern, sondern auch am Inhalt - ...
whooa! Ich könnt jetzt sagen, das war ein Test um den Vorposter zu eigener Recherche anzuregen oder in die Verzweiflung zu treiben, nein böser Fehler von mir! Sorry!
Also Dovecot an sich ist ja etwas *hüstel* aktueller als das Wiki ;)
/Florian
* Florian Streibelt postfix@f-streibelt.de:
Hallo,
Am 24.09.2010 15:21 schrieb Andreas Thomsen:
Klappt auch. Dabei macht der dovecot-lda eine user-verifizierung, auch gegen die genannte passwd-Datei.
aus eigener Erfahrung würde ich empfehlen, soetwas wie posfix-admin und z.B. ein mysql-backend einzusetzen, wenn man keinen LDAP zur Verfügung hat.
Ich würde mir Modoboa http://modoboa.org/ ansehen. Sauber programmiert in einer Sprache, die man schreiben und (!) lesen mag. Seit einer Weile verfolge ich das Projekt und obwohl ich es noch nicht selber aufgesetzt habe, wirkt es immer auf mich als hätte es Hand und Fuß.
p@rick
Vielen Dank für eure Tipps. Werde dann jetzt mal postfixadmin einrichten...
Gruß Andreas Thomsen
Am 24.09.2010 15:21, schrieb Andreas Thomsen:
Hallo,
wir betreiben hier einen Postfix-Server als Proxy, der dann die Mails weiterrelayed an einen internen Postfix auf dem dann als IMAP-Server noch ein Dovecot läuft. Das Relayen funktioniert auch soweit. Für den Dovecot habe ich eine passwd-Datei angelegt, gegen die sich die User authentifizieren und ihr Home-Dir zugewiesen bekommen. Der interne Postfix stellt die Mails via dovecot-lda an den Dovecot zu. Klappt auch. Dabei macht der dovecot-lda eine user-verifizierung, auch gegen die genannte passwd-Datei. Nun habe ich folgendes Problem: Die User haben mehrere, verschiedene E-Mail-Adressen. Um das ganze nun doch übersichtlich zu halten möchte ich gerne in der passwd-Datei für jeden User nur einen Eintrag drin haben (zur Anmeldung für IMAP), und die verschiedenen e-Mail-Adressen irgendwie über aliase realisieren.
Ist dann hier der richtige weg, das über virtual_alias_maps zu machen?
Postfix ist Version 2.6.1
Ergebnis von postconf -n: alias_database = hash:/etc/postfix/aliases alias_maps = hash:/etc/postfix/aliases config_directory = /etc/postfix daemon_directory = /usr/lib/postfix mydestination = localhost myhostname = hermes.domain1.de mynetworks = 127.0.0.0/8 192.168.2.0/24 192.168.1.7/32 192.168.1.14/32 myorigin = $mydomain relayhost = [192.168.1.14] setgid_group = maildrop virtual_alias_maps = hash:/etc/postfix/virtual_aliases virtual_mailbox_domains = domain1.de domain2.de virtual_mailbox_maps = hash:/etc/postfix/virtual virtual_transport = dovecot
Ergebnis von doveconf -n: # 2.0.3: /usr/local/etc/dovecot/dovecot.conf # OS: Linux 2.6.31.5-0.1-desktop x86_64 openSUSE 11.2 (x86_64) auth_debug = yes auth_debug_passwords = yes auth_verbose = yes auth_verbose_passwords = plain debug_log_path = /var/log/dovecot-debug.log disable_plaintext_auth = no info_log_path = /var/log/dovecot-info.log log_path = /var/log/dovecot.log mail_location = mdbox:~/mdbox mail_plugins = acl quota namespace { hidden = no inbox = yes location = prefix = separator = / type = private } namespace { list = yes location = maildir:/home/vmail/public:LAYOUT=fs:INDEX=~/public prefix = Public/ separator = / subscriptions = no type = public } passdb { args = username_format=%u /etc/passwd.dovecot driver = passwd-file } plugin { acl = vfile:/home/vmail/conf.d/acls:cache_secs=300 quota = dict:user::file:%h/mdbox/dovecot-quota quota_rule = *:storage=1GB quota_rule2 = Trash:storage=+10%% sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_global_dir = /home/vmail/conf.d/sieve } protocols = imap lmtp service auth-worker { user = doveauth } service auth { unix_listener auth-userdb { group = vmail mode = 0600 user = vmail } user = doveauth } service imap-login { inet_listener imap { address = 192.168.2.31 port = 143 } inet_listener imaps { port = 0 } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0660 user = postfix } } ssl = no userdb { args = username_format=%u /etc/passwd.dovecot driver = passwd-file } verbose_proctitle = yes verbose_ssl = yes protocol lmtp { mail_plugins = $mail_plugins sieve } protocol imap { mail_plugins = $mail_plugins imap_acl imap_quota mail_log notify }
Mit freundlichen Grüßen
Andreas Thomsen
participants (4)
-
Andreas Thomsen
-
Christian Boltz
-
Florian Streibelt
-
Patrick Ben Koetter