[Postfixbuch-users] Frage zu maildrop

Hanns Mattes hanns at hannsmattes.de
Di Jan 29 01:09:43 CET 2008


Hallo, Liste,

mein Mailserver (Suse 10.2, postfix 2.4.5, courier 4.1.2, maildrop 2.04)
bedient meine lokale Domain, und das funktioniert auch soweit
einwandfrei. Die Mails werden über den mailbox_command-Parameter über
maildrop ausgeliefert, Details folgen unten.

Mehr aus Neugier denn aus Notwendigkeit habe ich nun eine virtuelle
Domain aufgesetzt, die Nutzer sind in einem Ldap-Verzeichnis
hinterlegt. Zur Auslieferung greife ich ebenfalls auf maildrop und den
in der master.cf entsprechend definierten Transport zu. Eigentlich
funktioniert auch das prima.

Uneigentlich gibt es ein Problem, wenn ich *eine* Mail gleichzeitig
sowohl an einen lokalen, als auch einen virtuellen Nutzer schicke, also
in der Art "To: lokalernutzer at meine.domain,
virtuellernutzer at virtuelle.domain": 

Die Zustellung an den lokalen Nutzer glückt:

,----[ /var/log/mail ]
| Jan 29 00:09:54 linux postfix/local[19987]: 663B810BC70D:
| to=<hannsldap at hannsmattes.de>, relay=local, delay=0.25,
| delays=0.11/0.01/0/0.13, dsn=2.0.0, status=sent (delivered to command:
| /usr/local/bin/maildrop -d ${USER})
`----

Die Zustellung an den virtuellen Nutzer scheitert:

,----[ /var/log/mail ]
| Jan 29 00:09:54 linux postfix/pipe[19986]: 663B810BC70D:
| to=<mailversuch at hospis.ath.cx>, relay=maildrop, delay=0.2,
| delays=0.11/0.02/0/0.08, dsn=4.3.0, status=deferred (temporary
| failure. Command output: /usr/local/bin/maildrop: Unable to create a
| dot-lock at /home/hannsldap/Maildir/19989.0.linux.  )
`----

Klar: Im Verzeichnis des lokalen Nutzers hat der virtuelle Nutzer keine
Rechte. Warum aber versucht maildrop überhaupt, in diesem Fall in diesem
Verzeichnis zur arbeiten? Gibt es da ein Problem, weil gleichzeitig auf
das mailbox_command und den Eintrag in der master.cf zugegriffen wird?

Sende ich nur an den virtuellen Nutzer, dann geht's prima:

,----[ /var/log/mail ]
| Jan 29 00:58:43 linux postfix/pipe[21442]: 5CF6110BC716:
| to=<mailversuch at hospis.ath.cx>, relay=maildrop, delay=0.16,
| delays=0.09/0.01/0/0.07, dsn=2.0.0, status=sent (delivered via maildrop
| service)
`----

Hier die Ausgabe von postconf -n mit der Bitte (wenn das nicht allzu
unverschämt ist), sie auch ganz allgemein einmal zu prüfen, vor allem
die Restriktionen:

,----[ /etc/postfix/main.cf ]
| alias_maps = hash:/etc/aliases
|              hash:/var/lib/mailman/data/aliases
| biff = no
| broken_sasl_auth_clients = yes
| canonical_maps = hash:/etc/postfix/canonical
| command_directory = /usr/sbin
| config_directory = /etc/postfix
| daemon_directory = /usr/lib/postfix
| debug_peer_level = 2
| disable_dns_lookups = no
| disable_mime_output_conversion = no
| home_mailbox = Maildir/
| html_directory = /usr/share/doc/packages/postfix24/html
| inet_interfaces = all
| inet_protocols = all
| mail_owner = postfix
| mail_spool_directory = /var/mail
| mailbox_command = /usr/local/bin/maildrop -d ${USER}
| mailbox_size_limit = 0
| mailbox_transport = 
| mailq_path = /usr/bin/mailq
| manpage_directory = /usr/share/man
| masquerade_classes = envelope_sender, header_sender, header_recipient
| masquerade_domains = 
| masquerade_exceptions = root
| message_size_limit = 500000000
| mydestination = $myhostname,localhost.$mydomain,$mydomain,listen.hannsmattes.dyndns.org #mailman-Eintrag
| mydomain = hannsmattes.de
| myhostname = mail.hannsmattes.de
| mynetworks = 192.168.0.0/24, 127.0.0.0/8
| myorigin = $mydomain
| newaliases_path = /usr/bin/newaliases
| queue_directory = /var/spool/postfix
| readme_directory = /usr/share/doc/packages/postfix24/README_FILES
| relay_domains = 
| relocated_maps = hash:/etc/postfix/relocated
| sample_directory = /usr/share/doc/packages/postfix24/samples
| sender_canonical_maps = hash:/etc/postfix/sender_canonical
| sendmail_path = /usr/sbin/sendmail
| setgid_group = maildrop
| smtp_sasl_auth_enable = yes
| smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
| smtp_sasl_security_options = noanonymous
| smtp_tls_CAfile = /etc/postfix/ca-bundle.crt
| smtpd_client_restrictions = 
| smtpd_helo_required = no
| smtpd_helo_restrictions = 
| smtpd_recipient_restrictions = 
|          reject_non_fqdn_recipient
|          reject_non_fqdn_sender
|          reject_unknown_sender_domain
|          reject_unknown_recipient_domain
|          permit_mynetworks
|          permit_sasl_authenticated
|          reject_unauth_destination
|          check_recipient_access hash:/etc/postfix/roleaccount_exceptions
|          reject_multi_recipient_bounce
|          reject_invalid_hostname
|          check_policy_service inet:127.0.0.1:60000
| smtpd_sasl_auth_enable = yes
| smtpd_sasl_local_domain = 
| smtpd_sender_restrictions = hash:/etc/postfix/access
| smtpd_tls_CAfile = /etc/postfix/CAcert.pem
| smtpd_tls_cert_file = /etc/postfix/cert.pem
| smtpd_tls_key_file = /etc/postfix/key.pem
| smtpd_tls_loglevel = 1
| smtpd_tls_received_header = yes
| smtpd_tls_security_level = may
| strict_8bitmime = no
| strict_rfc821_envelopes = yes
| transport_maps = hash:/etc/postfix/transport
| unknown_local_recipient_reject_code = 550
| virtual_gid_maps = static:2001
| virtual_mailbox_domains = hospis.ath.cx
| virtual_mailbox_maps = proxy:ldap:/etc/postfix/ldap/vmail_recipients.cf
| virtual_transport = maildrop
| virtual_uid_maps = static:2001
`----

Hier der Eintrag in der master.cf, indem maildrop für den
virtual_transport bekannt gemacht wird:

,----[ /etc/postfix/master.cf, gekürzt ]
| maildrop  unix  -       n       n       -       -       pipe
|   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
`----

Vielen Dank im Voraus

Grüße Hanns


-- 
Einheiten werden stets in den am wenigsten gebräuchlichen
Bezeichnungen angegeben, zum Beispiel Geschwindigkeit in Doppelzoll
pro Viertelwoche oder Dichte in Achtelunzen pro Drittelgallone.



Mehr Informationen über die Mailingliste Postfixbuch-users