sicherer Mailserver mit Postfix
 Für die eMailkommunikation in unserem SOHO1)-LAN bedienen wir uns des SMTP-Server Postfix. Dies nicht zuletzt, da dieser, im Gegensatz zum Dinosaurier verschrieenen Sendmail wesentlich einfacher zu konfigurieren ist und auch sicherheitstechnische Vorteile bietet.
Für die eMailkommunikation in unserem SOHO1)-LAN bedienen wir uns des SMTP-Server Postfix. Dies nicht zuletzt, da dieser, im Gegensatz zum Dinosaurier verschrieenen Sendmail wesentlich einfacher zu konfigurieren ist und auch sicherheitstechnische Vorteile bietet.
Die nachfolgende Beschreibung zeigt, wie man unter CentOS 5 einen Postfix-Mailserver aufsetzen und sicher betreiben kann.
Installation
Von Haus aus wird bei der CentOS-Installation sendmail installiert. Daher werden wir zur späteren Konfiguration neben dem eigentlichen Paket postfix noch die beiden Pakete system-switch-mail und system-switch-mail-gnome via yum installieren.
yum install postfix system-switch-mail system-switch-mail-gnome
Konfiguration
Der Großteil der Konfiguration von Postfix erfolgt über /etc/postfix.main.cf. Desweiteren spielt die /etc/postfix/master.cf und weitere Dateien eine entscheidende Rolle.
# ll /etc/postfix/
insgesamt 296
-rw-r--r-- 1 root root 17832 21. Jan 2007  access
-rw-r--r-- 1 root root  3550 21. Jan 2007  bounce.cf.default
-rw-r--r-- 1 root root 11175 21. Jan 2007  canonical
-rw-r--r-- 1 root root  9920 21. Jan 2007  generic
-rw-r--r-- 1 root root 16838 21. Jan 2007  header_checks
-rw-r--r-- 1 root root 11942 21. Jan 2007  LICENSE
-rw-r--r-- 1 root root 26896  9. Aug 23:01 main.cf
-rw-r--r-- 1 root root 17981 21. Jan 2007  main.cf.default
-rw-r--r-- 1 root root   958 21. Jan 2007  makedefs.out
-rw-r--r-- 1 root root  4138  9. Aug 23:02 master.cf
-rw-r--r-- 1 root root 17639 21. Jan 2007  postfix-files
-rwxr-xr-x 1 root root  6366 21. Jan 2007  postfix-script
-rwxr-xr-x 1 root root 22564 21. Jan 2007  post-install
-rw-r--r-- 1 root root  6805 21. Jan 2007  relocated
-rw-r--r-- 1 root root  1629 21. Jan 2007  TLS_LICENSE
-rw-r--r-- 1 root root 12081 21. Jan 2007  transport
-rw-r--r-- 1 root root 11984 21. Jan 2007  virtual
Als erstes sehen wir uns die Hauptkonfigurationsdatei /etc/postfix.main.cf etwas genauer an. Die Konfigurationsdatei ist durch die vielen sehr guten Dokumentationshinweise doch sehr angewachsen, aber im Grunde beschränkt sich diese auf ein paar wenige „aktive“ Zeilen.
egrep -v '(^#|^$)' /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = host.domain.de
mydomain = domain.de
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.1.0/24, 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
 
  
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.3.3/samples
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
Eine weitere Möglichkeit sich die Konfiguration unseres Mailservers, oder besser gesagt die Definitionen die von den Standardvorgaben abweichen, anzeigen zu lassen, ist die Verwendung von postconf -n:
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix debug_peer_level = 2 html_directory = no inet_interfaces = all mail_owner = postfix mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain myhostname = host.domain.de mynetworks = 192.168.1.0/24, 127.0.0.0/8 mynetworks_style = subnet myorigin = $mydomain newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES sample_directory = /usr/share/doc/postfix-2.3.3/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtpd_banner = $myhostname ESMTP $mail_name unknown_local_recipient_reject_code = 550
Test
Die erfolgreiche erste Konfiguration testen wir am besten ganz einfach mit Hilfe von postfix selbst.
service postfix check
Der erste Start erfolgt dann ganz unspektakulär mittels:
service postfix start
Unsere erste Testmail verschicken wir dann von Hand und Verfolgen das Ergebnis im /var/log/maillog**.
telnet localhost 25 HELO localhost MAIL FROM: root@localhost RCPT TO: django@localhost DATA From: root@localhost To: django@localhost Subject: erste Testmail Dies ist unsere erste Testmail . quit
Aug 9 12:23:17 nss postfix/smtpd[30340]: connect from localhost.localdomain[127.0.0.1] Aug 9 12:23:39 nss postfix/smtpd[30340]: 1780F76020C: client=localhost.localdomain[127.0.0.1] Aug 9 12:23:53 nss postfix/cleanup[30354]: 1780F76020C: message-id=<20080809102339.1780F76020C@host.nausch.org> Aug 9 12:23:53 nss postfix/qmgr[30337]: 1780F76020C: from=<root@localhost.domain.de>, size=400, nrcpt=1 (queue active) Aug 9 12:23:53 nss postfix/local[30373]: 1780F76020C: to=<bigchief@localhost.domain.de>, orig_to=<bigchief@localhost>, relay=local, delay=21, delays=21/0/0 /0.04, dsn=2.0.0, status=sent (delivered to mailbox) Aug 9 12:23:53 nss postfix/qmgr[30337]: 1780F76020C: removed Aug 9 12:23:56 nss postfix/smtpd[30340]: disconnect from localhost.localdomain[127.0.0.1]
 django
 django