Postfix installieren
Als Mailserversoftware kommt Postfix zum Einsatz. Dieser Mail Transfer Agent wurde schon in den späten Neunzigern entwickelt und gehört immer noch mit zu den meist eingesetzten Mailservern. Postfix zählt zu den "leicht" administrierbaren Mailservern.
Installation
Installieren wir die Postfix Software wie gewohnt mit apt:
__$ sudo apt install -y postfix
Es startet eine grafische Installationsroutine, wo wir schon gleich die beiden wichtigsten Einstellungen vornehmen:
- General type of mail configuration:
Internet Site
- System mail name:
srv1.linuxserversetup.com
Postfix Konfigurationsdateien
Nach der Installation liegen alle Konfigurationsdateien von Postfix unter /etc/postfix
:
__$ sudo ls -l /etc/postfix
Ausgabe:
total 120
-rw-r--r-- 1 root root 60 Jan 4 16:43 dynamicmaps.cf
drwxr-xr-x 2 root root 4096 Jan 3 06:58 dynamicmaps.cf.d
-rw-r--r-- 1 root root 1433 Jan 4 16:43 main.cf
-rw-r--r-- 1 root root 27120 Jan 4 16:43 main.cf.proto
lrwxrwxrwx 1 root root 31 Jan 4 16:43 makedefs.out -> /usr/share/postfix/makedefs.out
-rw-r--r-- 1 root root 6208 Jan 4 16:43 master.cf
-rw-r--r-- 1 root root 6208 Jan 4 16:43 master.cf.proto
-rw-r--r-- 1 root root 10268 Jan 3 06:58 postfix-files
drwxr-xr-x 2 root root 4096 Jan 3 06:58 postfix-files.d
-rwxr-xr-x 1 root root 11532 Jan 3 06:58 postfix-script
-rwxr-xr-x 1 root root 29872 Jan 3 06:58 post-install
drwxr-xr-x 2 root root 4096 Jan 3 06:58 sasl
Die beiden wichtigen sind vor allem master.cf
und main.cf
. Unsere manuellen Änderungen werden wir lediglich in main.cf
vornehmen. Vorher schauen wir noch nach, ob Postfix korrekt läuft und unser MX Record aus der DNS-Datei abrufbar ist.
Postfix Status
Überprüfen wir, ob die Installation erfolgreich war und der Postfix Dienst ordnungsgemäß läuft:
__$ sudo service postfix status
Wenn es keine Probleme gibt solltest Du den Eintrag Active: active
sehen.
DNS MX (Mail Exchange) Resource Record
Mit dem dig Befehl, rufen wir unseren eigenen DNS-Eintrag ab und prüfen, ob ein Eintrag für einen Mail Exchange hinterlegt ist:
__$ dig linuxserversetup.com mx
Ausgabe:
; <<>> DiG 9.16.1-Ubuntu <<>> linuxserversetup.com mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23128
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;linuxserversetup.com. IN MX
;; ANSWER SECTION:
linuxserversetup.com. 70966 IN MX 10 mail.linuxserversetup.com.
;; Query time: 3 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Jan 4 16:55:14 UTC 2022
;; MSG SIZE rcvd: 70
In der "Answer Section" sollte die URL mail.linuxserversetup.com stehen. So hatten wir das in dem Kapitel DNS Einträge konfiguriert.
Wenn Postifx aktiv ist und der MX Record korrekt gesetzt, können wir unsere E-Mail Weiterleitung vornehmen.
DNS Reverse Hostname
Die reinkommenden E-Mails, die wir durch die Weiterleitung wieder raus senden, sollten den richtigen Hostnamen für den Reverse Lookup mit sich führen. Schauen wir nach, ob der korrekt hinterlegt ist, ansonsten ändern wir das in der Datei /etc/postfix/main.cf
:
__$ sudo nano /etc/postfix/main.cf
Die Option myhostname
sollte den Wert srv1.linuxserversetup.com
haben. Die vollständige Datei sieht dann so aus:
/etc/postfix/main.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 (Ubuntu)
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
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# 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_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = srv1.linuxservrsetup.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, srv1.linuxservrsetup.com, localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
Virtuelle E-Mail Aliase konfigurieren
Da wir keine Postfächer anlegen, sondern lediglich E-Mails empfangen und weiterleiten, brauchen wir eine Datei, die diese Zuordnungen auflistet. In den Ordner /etc/postfix
legen wir eine Datei mit dem Namen virtual
ab:
__$ sudo nano /etc/postfix/virtual
Als Bespiel schreibe ich folgendes in die Datei und speicher sie ab. Wie immer: Deine Daten bei mail@example.com
eintragen.
/etc/postfix/virtual
# Forwarding Addresses (from -> to)
tom@linuxservrsetup.com mail@example.com
jerry@linuxservrsetup.com mail@example.com
Der Mailserver soll E-Mails für tom@linuxservrsetup.com
und jerry@linuxservrsetup.com
entgegennehmen und sie an mail@example.com
weiterleiten. Die erste Zeile beginnt mit einer Raute (#
) und ist nur ein Kommentar.
Die Schreibweise für mehrere Empfänger wäre Folgende:
/etc/postfix/virtual
# Forwarding Addresses (from -> to)
tom@linuxservrsetup.com mail-1@example.com, mail-2@example.com
jerry@linuxservrsetup.com mail@example.com
Eine E-Mail an tom@linuxservrsetup.com
würde so an mail-1@example.com
und mail-2@example.com
weitergeleitet werden.
Die Domain für die virtuellen Aliase und die obige Datei mit den Zuordnungen müssen wir noch Postfix mitteilen. Öffnen wir dazu die entsprechende Konfigurationsdatei /etc/postfix/main.cf
:
__$ sudo nano /etc/postfix/main.cf
Und ergänzen am Ende:
Auszug /etc/postfix/main.cf
...
# virtual alias
virtual_alias_domains = linuxservrsetup.com
virtual_alias_maps = hash:/etc/postfix/virtual
Die vollständige Datei sieht dann so aus:
/etc/postfix/main.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 (Ubuntu)
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
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# 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_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = srv1.linuxservrsetup.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, srv1.linuxservrsetup.com, localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
# virtual alias
virtual_alias_domains = linuxserversetup.com
virtual_alias_maps = hash:/etc/postfix/virtual
Abschließende Einstellungen
Noch ein paar Handgriffe und es ist geschafft. Der aktuelle Postfix Prozess läuft noch mit den alten Einstellungen.
Postfix bezieht sich auf eine interne Adresstabelle, die wir mit postmap
aktualisieren:
__$ sudo postmap /etc/postfix/virtual
Den Postfix Dienst starten wir neu, damit die neuen Einstellungen übernommen werden:
__$ sudo systemctl restart postfix
Der Mailserver soll bei einem Server Neustart automatisch mitstarten:
__$ sudo systemctl enable postfix
Und natürlich soll unsere Firewall Postfix erlauben E-Mails anzunehmen und raus zu senden:
__$ sudo ufw allow Postfix
Erledigt! Bleibt noch (wie oben) ein letzter Status Check:
__$ sudo service postfix status
Wenn die Meldung immer noch Active: active
lautet, kannst Du eine Test E-Mail an Deine neue Adresse senden. In meinem Fall an tom@linuxservrsetup.com
.