Zurück zur MySQL Konfiguration
Inhalt
Vor zur Cyrus Konfiguration

Konfiguration von Postfix

jetzt geht es an unser Herzstück :)
als Erstes ändern wir die "master.cf" unter /etc/postfix, dort ändern wir folgende Zeile:

flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
in
flags= user=cyrus argv=/usr/cyrus/bin/deliver -r ${sender} -m ${extension} ${user}

Jetzt geht es an die "main.cf" auch in /etc/postfix
als Erstes müssen wir natürlich unseren "hostname" ändern und das geschieht in folgender Zeile:

myhostname = mein.host.de

Postfix muss natürlich noch wissen, welche Domains es annehmen darf und das erledigen wir mit:

mydestination = mein.host.de, mein.zweiter.host.de, mail.domain.tld

MySQL Benutzer fügen bitte noch Folgendes hinzu:

mysql:/etc/postfix/mysql-mydestination.cf

Bitte darauf achten die Domains mit "," zu trennen.

jetzt legen wir unseren Mailbox Transport fest, in unserem Fall ist das Procmail:

mailbox_transport = procmail

da wir später mit Procmail arbeiten wird Cyrus nur als "fallback" konfiguriert, das heisst: sollte Procmail mal aus irgendeinem Grund nicht funktionieren, bekommen die Benutzer trotzdem ihre Post:

fallback_transport = cyrus

jetzt legen wir noch unsere "virtual alias" maps fest, damit erreichen wir mehrere Benutzer in mehreren Domains:

virtual_alias_maps = hash:/etc/postfix/virtual

unsere MySQL Benutzer fügen bitte noch folgende Zeile hinzu:

mysql:/etc/postfix/mysql-virtual.cf

so, nun legen wir noch die "canonical" fest; in dieser Datei kann man E-Mails ändern.

Beispiel: geht eine Mail an: autor@postix-howto.de- bekommt sie der Benutzer david@postfix-howto.de ohne dass der Benutzer davon etwas mitbekommt.

sender_canonical_maps = hash:/etc/postfix/canonical

MySQL Benutzer fügen bitte folgende Zeile hinzu:

mysql:/etc/postfix/mysql-canonical.cf

Damit wäre der erste Schritt getan und es geht weiter mit:

 

SMTP authentifizierung

Weiter geht es mit unserer SMTP Authentifizierung, damit NUR unsere Benutzer Mails verschicken können, ansonsten wären wir ein "Open Relay" und das wird oft von Spammern benutzt, um Ihren Müll los zu werden.

Dazu hängen wir folgende Zeilen an die /etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes

Jetzt legen wir noch einige Regeln fest, die bestimmen, wann wir eine Mail annehmen und wann nicht. Mit einer geschickten Auswahl sperren wir schon eine Menge Spam von vornherein.

Zur Hilfe benutzen wir sogenannte RBL(Realtime Blackhole List). In solchen Listen sind Server aufgelistet, die aktive Spam verschicken und den wollen wir ja nicht. Los gehts mit einigen Konfigurationsschritten:

default_rbl_reply = $rbl_code RBLTRAP: You can't send us a E-mail today!!!

smtpd_helo_required = yes
smtpd_delay_reject = yes

- "default_rbl_reply = $rbl_code RBLTRAP:", sollte ein Server in einer der RBL Listen stehen, bekommt er die Nachricht:

"You can't send us a E-mail today!!!"

- "smtpd_helo_required", bedeutet, dass der sendende Mailserver uns erst "hallo" sagen muss, Viren machen das oft nicht und somit können Sie sich schlecht bei uns verteilen.

Bitte drauf achten das die Zeilen hinter dem "=" mit einem TAB eingerückt sind da sonst Postfix sie als neue Befehle erkennt.
Jetzt kommen wir zu unseren Regeln:
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination,
reject_rbl_client zombie.dnsbl.sorbs.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client blackholes.easynet.nl,
reject_rbl_client unconfirmed.dsbl.org,
reject_rbl_client dynablock.njabl.org,
reject_rbl_client dialup.blacklist.jippg.org,
reject_rbl_client cbl.abuseat.org,
permit

- "smtpd_recipient_restrictions", überprüft den zu sendenden Server nach bestimmten Kriterien, sollte zb: der "hostname" nicht stimmen ist es zu 99% ein Spammer und er wird geblockt.

smtpd_helo_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_non_fqdn_hostname,
reject_invalid_hostname,
reject_rhsbl_client rhsbl.sorbs.net,
reject_rhsbl_sender rhsbl.sorbs.net,
reject_rbl_client opm.blitzed.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client relays.ordb.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client unconfirmed.dsbl.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client dynablock.njabl.org,
reject_rbl_client dialup.blacklist.jippg.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client multihop.dsbl.org,
reject_rbl_client dialup.rbl.kropka.net,
reject_unauth_pipelining

- "smtpd_helo_restrictions", überprüft den zu sendenden Server nach dem er "hallo" gesagt hat.

smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_rhsbl_client rhsbl.sorbs.net,
reject_rhsbl_sender rhsbl.sorbs.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client unconfirmed.dsbl.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client dynablock.njabl.org,
reject_rbl_client dialup.blacklist.jippg.org,
reject_rbl_client multihop.dsbl.org,
reject_rbl_client dialup.rbl.kropka.net,
reject_rbl_client opm.blitzed.org,
reject_rbl_client cbl.abuseat.org,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining

- "smtpd_sender_restrictions", überprüft den Sender der E-Mail.

Wer mehr über die Verfahren wissen will, dem empfehle ich das Postfix Buch von Peer Heinlein.

Bei der Postfix Installation haben wir extra einen Patch für TLS eingespielt. Damit wir TLS benutzen können, fügen wir noch folgende Zeilen hinzu:

smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/certs/key.pem
smtpd_tls_cert_file = /etc/certs/cert.pem
smtpd_tls_CAfile = /etc/certs/cert.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

smtp_use_tls = yes
smtp_tls_key_file = /etc/certs/key.pem
smtp_tls_cert_file = /etc/certs/cert.pem
smtp_tls_CAfile = /etc/certs/cert.pem

Da TLS nicht ohne die nötigen Certifikate funktioniert, erstellen wir sie ganz einfach mit:

openssl req -new -nodes -out req.pem -keyout key.pem
openssl rsa -in key.pem -out new.key.pem
openssl x509 -in req.pem -out ca-cert -req \
-signkey new.key.pem -days 999

mkdir /etc/certs
cp new.key.pem /etc/certs/key.pem
rm new.key.pem
cat ca-cert >> /etc/certs/cert.pem

Das wäre geschafft. Postfix ist nun TLS fähig.

Postfix kann E-Mails von vornherein blocken, wenn Sie bestimmte Inhalte haben, zb: exe, pif, etc. Datein, die eigentlich nur Viren enthalten, deswegen ist es ganz ratsam, solche E-Mails zu blocken und mit einer Fehlermeldung zurückzuschicken. Das erreichen wir, indem wir die datei "/etc/postfix/body_checks" erstellen mit folgendem Inhalt:

/^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\ *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wmf)"?\ *$/ REJECT attachment type not allowed

Wer bestimmte Datein doch erlauben will, der löscht die Endung einfach raus.

Nun fügen wir nur noch folgende Zeile in /etc/postfix/main.cf hinzu:

mime_header_checks=pcre:/etc/postfix/body_check

Fertig. Unser Postfix Server ist bereit für den Betrieb.


Zurück zur MySQL Konfiguration
Inhalt
Vor zur Cyrus Konfiguration