Mailserver

Aus Fachinformatiker Azubi
Wechseln zu: Navigation, Suche

Einen Mailserver aufzusetzen mit den verschiedenen Komponenten kann Kopfschmerzen verursachen. In diesem Tutorial wollte ich eine aktuelle (17.08.2013) Anleitung erstellen. Im Netz selbst, gibt es hunderte Anleitungen. Aber die ich gefunden habe, waren nicht vollständig oder veraltet.

Als Betriebssystem verwende ich Debian 6.0 squeeze.

apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules dovecot-imapd

DNS/IP

FQDN

FQDN steht für Fully Qualified Domain Name und stellt eine absolute Adresse zu deinem Server dar. Dieses wird in Form einer Domainaddresse realisiert (Beispiel www.alcodo.com). Es ist empfehlenswert in Form einer Subdomain z.B. mail.alcodo.com zu benutzen.

Somit besteht ein FQDN aus:

  1. Hostnamen: www
  2. Domainnamen: alcodo
  3. Top-Level-Domain: .com

Ein Protokoll wie z.B. http ist nicht bestandteil.

Hosts Datei anpassen:

vi /etc/hosts
#81.169.149.182 h2157161.stratoserver.net h2157161
81.169.149.182 mail.alcodo.com mail

Ändern des FQDN:

root@46463a:~# hostname mail

Prüfung des FQDN:

Erfolgreich:
root@46463a:~# hostname --fqdn
mail.alcodo.com

root@info:/etc# hostname -d
alcodo.com


Hostname ist kein FQDN:
root@46463a:~# hostname --fqdn
hostname: Name or service not known


TODO: Prüfen Inwieweit das Relevant ist.

root@info:/etc# cat mailname 
mail.alcodo.com

Reverse DNS

Reverse DNS kann man problemlos beim Provider einstellen. Mittels einem Befehl sieht man sofort das Ergebnis. Falls man Reverse DND nicht einrichetet, werden die Mails bei manchen Anbieter nicht zugestellt oder landen sofort unter Spam.

approach@thin ~ $ host 81.169.149.182
182.149.169.81.in-addr.arpa domain name pointer mail.alcodo.com.

MX

Ist der MX Eintrag richtig konfiguriert von eurem DNS Server.

approach@thin ~ $ host -t mx alcodo.com
alcodo.com mail is handled by 10 mail.alcodo.com.

User

Benutzer anlegen bei Bedarf ohne Login:

adduser info --disabled-login

Benutzer löschen mit seinem Homeverzeichnis:

deluser --remove-home info

Postfix

Wenn FQDN und rDNS eingestellt ist, dann war das schon die halbe Miete.

Beispiel Konfig:

 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 (Debian/GNU)
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

# 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_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = mail.alcodo.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mail.alcodo.com, localhost.alcodo.com, localhost.localdomain, localhost, alcodo.com
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#mailbox_command = procmail -a "$EXTENSION"
mailbox_command = /usr/lib/dovecot/deliver -f "$SENDER" -a "$RECIPIENT"
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 
#inet_protocols = all
inet_protocols = ipv4

smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

SSL Zertifikate können wie folgt generiert werden: http://slackspace.de/articles/postfix-unter-debian-6-einrichten/

Dovecot

Dovecot einzurichten gestaltet sich sehr einfach. Die Zertifikate werden automatisch bei der Installation von dovecot generiert. Die folgende Setting Datei beinhaltet nur ein SSL Login. Nach einem Neustart funktioniert das ganze auch schon.

protocols = imaps
ssl = yes
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
mail_location = maildir:~/Maildir
mail_privileged_group = mail

protocol lda {
  postmaster_address = test@alcodo.com
}

auth default {
  mechanisms = plain
}

user = root

Aliases

Mittels Aliases kann man Verschiedene Regeln erstellen für die Maiadressen. Es ist nicht verkehrt die System Nachrichten zu erhalten. Die Logik ist sehr simpel. Alle Mails die postmaster@domain.de kommen werden weitergeleitet zum root@domain.de. Am ende steht jedoch root: info. Das bedeutet alle Aliases sind verlinkt auf den User info.

# Required aliases
postmaster:     root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:          postmaster
spam:           postmaster

# Other aliases
root: info

Ganze E-Mail Adressen für die Weiterleitung sind möglich. Außerdem kann man getrennt mit einem Komma mehrere Werte und somit z.B. eine Rundmail erstellen. Nach änderung sollte man

newaliases

ausführen, um die Datenbank zu aktualisieren.

Multidomain

Um den Server mit mehreren Domains zu nutzen muss folgendes gemacht werden:

  1. MX Eintrag beim DNS setzen
  2. Postfix main.cf Config erweitern mit dem Eintrag: virtual_mailbox_domains = example.com (Oder mydestination jedoch nicht beides)
  3. Bei Bedarf noch die Struktur bei Dovecot anpassen: mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n

Sonstiges

Gefälschte Absender Adresse

Es ist natürlich möglich mit einer frei erfundenen Absender Adresse Mails zu verschicken, wie z.b. MaxIst@cool.de. Die Mail wird allerdings sofort als Spam erkannt und landet im Spam Ordner.

In manchen Anwendungsfällen muss man für Kunden Mails verschicken. Und im Falle einer Rückfrage, soll ihre Mail Adresse verwendet werden. Für diese Szenario gibt es den Header Parameter Reply To, diese Mail Adresse wird automatisch verwendet für eine Rückantwort. Und würde genau dieses Szenario gut abdeckt.