PostfixNach nun doch geraumer Zeit an kreativer Pause, könnt ihr den nächsten Beitrag - die eigentliche Postfix Konfiguration - bestaunen.
Was erwartet euch hier? Nun, in diesem Beitrag geht es um die eigentliche Postfix Konfiguration, nachdem im letzten Beitrag das Backend dafür bereitgestellt wurde. Die Dateien, welche bereits erzeugt wurden, müssen Postfix bekannt gemacht werden. Zudem muss Postfix ebenfalls wissen, welche Datei für was zuständig ist. Dies will ich in diesem Beitrag erleutern und aufzeigen.
Des weiteren erzeigen wir in diesem Beitrag SSL Zertifikate um eine gesicherte Verbindung aubauen zu können.
Installation der SoftwareDie benötigte Software wurde bereits einen Beitrag früher installiert. Deshalb ist es hier nicht nötig noch ein weiteres Packet zu installieren.
Konfiguration der SoftwareDie erste Datei, welche für Postfix wichtig ist nenn sich "main.cf" und ist unter "/etc/postfix/" zu finden. Diese werden wir nun auch als erstes wie folgt anpassen.
Dabei ist wichtig zu wissen, dass Zeilen, welche nicht ganz am Anfang beginnen als fortsetzung der verhergehenden Zeile gewertet wird.
- Code: Alles auswählen
# nano /etc/postfix/main.cf
- Code: Alles auswählen
# some general configuration for postfix
inet_interfaces = all
myhostname = server.intdom.int
mydomain = intdom.int
myorigin = $mydomain
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
masquerade_domains = $mydomain
default_privs = nobody
message_size_limit = 20480000
append_dot_mydomain = no
appent_at_myorigin = no
# smtp(d) configuration and restrictions
smtpd_banner = $myhostname ESMTP $mail_name
smtp_generic_maps = mysql:/etc/postfix/mysql/smtpd_maps.cf
smtpd_recipient_limit = 50
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 2
smtpd_hard_error_limit = 5
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
reject_invalid_hostname
smtpd_recipient_restrictions =
# Dynamic IPs
reject_rbl_client dul.dnsbl.sorbs.net,
# Hijacked networks
reject_rbl_client zombie.dnsbl.sorbs.net,
# Hosts that have sent spam to the admins of SORBS
reject_rbl_client spam.dnsbl.sorbs.net,
# List of Open SMTP relay servers
reject_rbl_client smtp.dnsbl.sorbs.net
# List of web (WWW) servers which have spammer abusable vulnerabilities (e.g. FormMail scripts)
reject_rbl_client web.dnsbl.sorbs.net
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dnsbl.njabl.org,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unknown_recipient_domain,
reject_unknown_sender_domain
# smtpd sasl/tls configuration
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd-cert.pem
smtpd_tls_key_file = /etc/postfix/smtpd-key.pem
# smtp relay AUTH
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_relay
smtp_sasl_security_options = noanonymous
# some queue stuff
minimal_backoff_time = 1000s
maximal_backoff_time = 4000s
bounce_queue_lifetime = 2d
maximal_queue_lifetime = 2d
# local user confiuguration
home_mailbox = .maildir/
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# virtual users/domain configuration
virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_forwardings.cf
mysql:/etc/postfix/mysql/virtual_email2email.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailboxes.cf
virtual_mailbox_base = /srv/raid1/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = virtual
In der Datei main.cf haben wir nun auf weitere Dateien verwiesen, wie z.B: /etc/postfix/smtp_relay, welche noch nicht existieren. Diese werden nun erstellt.
- Code: Alles auswählen
# nano /etc/postfix/smtp_relay.cf
- Code: Alles auswählen
smtp.relayserver.de benutzer:passwort
Wenn ihr das Beispiel dies auch mit einem 1und1 Relay Server betreibt würde hier als Server "smtp.1und1.de benutzer:passwort" stehen. Damit Postfix diese Datei aber auch verarbeiten kann fehlt noch ein wichtiger Schritt: Die Datei muss in das gewünscht Format übernommen werden. Dies passiert mit dem Befehl "postmap".
- Code: Alles auswählen
# postmap /etc/postfix/smtp_relay
# chmod o-r smtp_*
# chown root:postfix smtp_*
Tipp: Wer sich fragt was die zwei letzten Befehle gemacht haben und warum ich diese ausgeführt habe, sollte sich vielleicht fragen ob dieses How-To das richtige für ihn ist.
BTW: Was fehlt denn jetzt noch? :rolleyes:
Richtig! Wir haben noch keine Zertifikate für SASL. Also werden wir dies nun nachholen.
Dazu wechseln wir als erstes in das OpenSSL Verzeichnis unserer CA.
- Code: Alles auswählen
# cd /etc/ssl_ca/
Danach erstellen wir ein CSR (Certificate Signing Request). Also eine Anfrage an unsere CA ein Zertifikat zu signieren.
- Code: Alles auswählen
# openssl req -new -nodes -out smtpd-req.pem -keyout ./private/smtpd-key.pem -config ./openssl.cnf
Und nachdem wir dann den CSR haben müssen wir es auch noch mit unsere CA signieren, das wie folgt geschieht.
- Code: Alles auswählen
# openssl ca -out smtpd-cert.pem -config ./openssl.cnf -infiles ./smtpd-req.pem
Wie ihr sicherlich bemerkt habt, musstet ihr hier nun das Passwort für den Private Key der CA eingeben. Deshalb sei mir hier nochmals der Hinweis erlaubt, dass Ihr das Passwort der CA nicht velieren dürft, da es sonst nicht mehr möglich ist, ein CSR zu signieren.
Um nun aber endlich Postfix das erste Mal in Aktion zu erleben machen wir zügig weiter.
Das erzeugte Zertifikat samt Key kopieren wir auch in das Postfix Verzeichnis um alle Daten für ein Produkt an einem Platz zu haben.
- Code: Alles auswählen
# cp /etc/ssl_ca/smtpd-cert.pem /etc/postfix/
# cp /etc/ssl_ca/private/smtpd-key.pem /etc/postfix/
# cd /etc/postfix/
# chown root:postfix smtpd-*
# chmod o-r smtpd-*
Als letzte Konfigurationsschritt muss das SASL Modul eine Konfiguration spendiert bekommen.
- Code: Alles auswählen
# nano /etc/postfix/sasl/smtpd.conf
- Code: Alles auswählen
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login cram-md5 digest-md5
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: geheimes_passwort
sql_database: mailconfig
sql_select: select password from users where email=%u@%r
Bevor wir nun Postfix das erste Mal starten füllen wir die Datenbank noch mit ein paar Testdaten. Wie viele überlasse ich euch. Ich selbst werde hier eine Domain und einen Benutzer aufzeigen.
- Code: Alles auswählen
# mysql -u root -p
> use mailconfig;
> insert into domains values (extern-maildomain.de);
> insert into users values (mein.name@extern-maildomain.de, geheimes_unverschlüsseltes_passwort);
> insert into forwardings values (alias_für_main_name@extern-maildomain.de, mein.name@extern-maildomain.de);
Info: Gerne nehme ich Tipps an, wie man das Passwort verschlüsselt in der Datenbank abspeichern kann. Und nun ist der große Augenblick gekommen! Postfix wird das erste Mal gestartet.
- Code: Alles auswählen
# /etc/init.d/postfix restart
Ab sofort müsste euer Server Mails annehmen und versenden können. Versucht es einfach mal aus.
Wer dazu Hilfe benötigt, kann sich gerne bei uns im Forum rekunden.
Kleiner Tipp aber meinerseits: Da wir noch kein POP3/IMAP Server haben, ist es derzeit nicht möglich die Mails mit KMail,... abzufragen. Dennoch könnt ihr überprüfen, ob Mails für euch angenommen werden. Dazu sendet euch eine Mail zu und schaut im Verzeichnis "/srv/raid1/vmail/extern-maildomain.de/mein.name/new" nach, ob diese dort abgelegt wurden. Alternative dazu ist die Datei /var/log/mail.log, welche euch über alle Aktivitäten von Postfix auf dem laufenden hält.
Eine Kleine Anmerkung am Schluss sei hier erlaubt: Diese Konfiguration beinhaltet derzeit keinen SPAM und auch keinen Virenfilter. Dies werde ich bei Gelegenheit auch hier im How-To preisgeben.
Jetzt wünsche ich euch aber erst mal viel Spaß mit euerm neuen Mailsystem.