Postfix, AOL und Freenet
25. Februar 2007Ich hab mal versucht, auf meinem Debian-Server einen Mailserver mit Postfix aufzusetzen, der meine Mails bei Freenet abliefert. Da ich bei Freenet angemeldet bin, sollte das ganze mit SMTP_AUTH kein Problem darstellen. Also ein beherztes
apt-get install postfix libsasl2 libsasl2-modules
ausgeführt und schon war die nötige Software installiert und auch eine Grundkonfiguration vorgenommen. Dann noch ein paar Zeilen in /etc/postfix/main.cf geändert und es sollte gehen. Als zusätzliche Zeilen habe ich noch eingetragen
## SMTP AUTH Client
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtpd_sasl_security_options = noanonymous
Danach habe ich in /etc/postfix eine Datei sasl_passwd als Passwortdatei für sasl angelegt. Der Inhalt sieht so aus:
mx.freenet.de [MeinUserName@freenet.de]:[MeinPasswort]
Danach die Passwort-datei mit
postmap /etc/postfix/sasl_passwd
Postfixfreundlich codiert, mit
postfix reload
die neuen Einstellungen geladen und schon sollte es funktionieren.
Also Mailprogramm angeschmissen, eine Probemail geschickt und gewartet. Nichts passiert. Warum nicht?
Zum Glück wird bei Fehlern in der Datei /var/log/mail.info ein Eintrag hinterlassen und da stand tatsächlich auch drin, warum es nicht geht.
Kurze Zwischenbemerkung dazu: Als DSL-Provider benutze ich AOL und eben jener Provider leitet seit Mitte 2006 alle ausgehenden Mails über einen Zwangsproxy. Da ich die Mail statt an den AOL Mailserver an den Freenet Mailserver senden wollte, war der Proxy der Meinung ich spamme und hat das einfach verwehrt.
Nach einigen googlen bin ich dann auf die Lösung gekommen. Der Proxy verweigert nur die Auslieferung über den normalen Mailport 25. Für SMTP_AUTH ist aber auch der Port 587 zuständig und der wird vom Proxy nicht geblockt.
Zur Lösung des Problems trägt man in die entsprechende Zeile in der main.cf hinter der Adresse des Realyhosts noch den Port ein, also etwa so:
relayhost = mx.freenet.de:587
Gesagt, getan. Nach einem erneuten
postfix reload
konnte ich dann tatsächlich Mails senden.
Jetzt war noch etwas Feintuning angesagt. In der Grundkonfiguration versendet Postfix die Mails mit dem Absender [Benutzer_auf_Mailserver]@[hostanem.domain]. Ich hätte jedoch gerne, das dort meine Freenet-Adresse steht. Auch dafür gab’s eine Lösung, die sogenannte sender_canonical_maps. Über den Eintrag
sender_canonical_maps = hash:/etc/postfix/sender_canonical
in main.cf konnte ich eine Datei angeben, deren Inhalt so aussieht:
Benutzer_auf_Mailserver gewünschte@emailadresse.de
Das ganze dann wieder mit
postmap /etc/postfix/sender_canonical
in ein Postfixfreundliches Format gebracht,
postfix reload
ausgeführt und seit dem werden meine Mails mit meiner richtigen Adresse verschickt
Als Beispiel hier mal meine main.cf und die master.cf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = Trubadix
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.localdomain, localhost
relayhost = mx.freenet.de:587
mynetworks = 192.168.178.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
disable_dns_lookups = yes
## SMTP AUTH Client
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtpd_sasl_security_options = noanonymous
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - - - - smtpd -vv
#submission inet n - - - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - - - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - - - - qmqpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - - 300 1 oqmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - - - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - - - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}