| Zurück zur MySQL 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} |
| 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:
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 |
- "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.| 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 |
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 |
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 |