Lieber Postfix als Sendmail unter FreeBSD

Das Topic sagt alles. 🙂
Postfix ist einfacher zu handhaben als sendmail und recht schmerzfrei zu installieren.

Hier gebaut mit SMTP-Auth (SASL), SSL und SpamAssassin

 

Aktuell wird aus den Ports ein 2.4.6 installiert.

Installieren:
# cd /usr/ports/mail/postfix
/usr/ports/mail/postfix # make install && make replace && make clean

In dem aufpoppendem Dialog habe ich einen Haken gemacht (leertaste) bei:
PCRE, SASL2 und TLS
Das reicht im Allgemeinen.

Nachfragen ob die Gruppen postfix und maildrop und der User postfix eingerichtet werden sollen können mit [enter] (ja) bestätigt werden.

Ggf. anschließend noch die *.dbs erzeugen:
# cd /usr/local/etc/postfix
# for i in access canonical relayto relocated sender_canonical transport virtual; do touch $i && postmap $i; done
(Hint: BASH benutzen)

 

Die Konfiguration ist anschließend in /usr/local/etc/postfix zu finden.

Hier nur die Punkte um SASL-Auth und TLS zu aktivieren:
# vi /usr/local/etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_authenticated_header = yes

smtp_use_tls = yes
smtp_tls_CAfile = /usr/local/etc/postfix/certificate.pem
smtp_tls_cert_file = /usr/local/etc/postfix/certificate.pem
smtp_tls_key_file = $smtp_tls_cert_file
smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtpd_use_tls = yes
smtpd_tls_CAfile = /usr/local/etc/postfix/certificate.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/certificate.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_loglevel = 1
smtpd_tls_received_header = no
smtpd_tls_use_session_cache_database = sdbm:/usr/local/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600
tls_random_source = /dev/urandom

Der Rest der Konfiguration ist Fleißaufgabe. 😉
Ein paar Tips hierzu habe ich, vor einiger Zeit schon, hier beschrieben. Ein bisschen was davon ist redundant Beschrieben…

 

Für SMTP-Auth muss dann natürlich noch der SASLAuthd installiert werden:
# cd /usr/ports/security/cyrus-sasl2-saslauthd
# make install && make clean

Und die sasl-config geschrieben werden. Hier erstmal ganz simpel gegen die lokalen (passwd/shadow) user:
# vi /usr/local/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

 

Abschließend sicherstellen das in der /etc/rc.conf in etwa fongendes steht:

postfix_enable=“YES“
sendmail_enable=“NO“
sendmail_flags=“-bd“
sendmail_msp_queue_enable=“NO“
sendmail_outbound_enable=“NO“
sendmail_submit_enable=“NO“
saslauthd_enable=“YES“

 

Schlußendlich kann das ganze gestartet werden:
/usr/local/etc/rc.d/saslauthd start
/usr/local/etc/rc.d/postfix start

 

Möchte man noch einen SpamAssasin, der Global alle Mail scannt, nutzen ist folgendes zusätzlich zu machen:
# cd /usr/ports/mail/p5-Mail-SpamAssassin
# make install && make clean
# vi /usr/local/sbin/postfix-sa

#!/usr/local/bin/bash
/usr/local/bin/spamc | /usr/sbin/sendmail -G -i „$@“
exit $?

# chmod + x /usr/local/sbin/postfix-sa

Und den SA im Postfix aktivieren:
# vi /usr/local/etc/postfix/master.cf

smtp      inet  n       -       n       -       -       smtpd
     -o content_filter=spamfilter
smtps     inet  n       -       n       -       -       smtpd
     -o smtpd_tls_wrappermode=yes
     -o content_filter=spamfilter
spamfilter   unix  -       n       n       -       -       pipe
     flags=Rq user=spamd argv=/usr/local/sbin/postfix-sa -f ${sender} -- ${recipient}

In der /etc/rc.conf sollte folgendes eingetragen werden:

spamd_enable=“YES“
spamd_flags=“-u spamd -H /var/spool/spamd“

Die SA Datenbank liegt dann auch in /var/spool/spamd/.spamassassin

 

Starten des SA-SpamD und restart des postfix nicht vergessen:
/usr/local/etc/rc.d/sa-spamd start
/usr/local/etc/rc.d/postfix restart

 

Und das wars auch schon… kurz und schmerzlos.