Mailserver für einen Homeserver
Die folgende Anleitung erklärt, wie du einen funktionierenden Mailserver hinter einem Router mit dynamischer IP einrichten kannst. Hierfür wird als „Basis“ Postfix und Dovecot verwendet. Weiterhin kommen Fetchmail zum Abrufen von Mails von anderen Servern, Sieve zum Erstellen einfacher Filterregeln, sowie Postgrey, ClamAV, SpamAssassin und AmavisNew zur Spam- und Virenbekämpfung zum Einsatz.
Diese Anleitung ist zwar für Homeserver konzipiert, kann aber auch für Root- und V-Server verwendet werden. Der große Unterschied liegt in der Verwendung eines Relayhosts.
Softwarevoraussetzungen: Paketverwaltung | Texteditor | siehe weiter unten
Schwierigkeitsgrad: Schwer
Ausgetestet mit folgenden Betriebssystemen: Ubuntu (Jaunty bis Precise) | Debian (Lenny, Squeeze, Wheezy teilweise Probleme bei Dovecot-Postfix Integration) | teilweise auch andere Distributionen
Achtung! sudo:
In dieser Anleitung verdeutlicht der Befehl sudo, dass die folgende Codezeile mit Root-Rechten ausgeführt werden muss.
In normalen Ubuntu Installationen (Root-/VServer siehe Debian) kann dies durch den Befehl sudo erreicht werden.
Bei Debian wird bei der Installation ein Passwort für den Root-Benutzer festgelegt, so kann man sich entweder direkt als Root oder als „normaler“ Benutzer mit Eingabe von su als Root einloggen (Root-Passwort benötigt) → sudo bleibt dann überflüssig!
Voraussetzungen
Folgende Voraussetzungen müssen erfüllt werden:
- E-Mail Adresse bei Arcor
- eine dynamische DNS (zum Beispiel bei DynDNS)
- statische IP-Adressen im lokalen Netzwerk
- Weiterleitung von Port 25 an den Host mit dem Mailserver
- du hast den Beitrag Einführung gelesen
Wenn du alle erfüllt hast, kannst du nun mit den einzelnen Diensten starten. Falls du Fragen hast, kannst du dich per E-Mail an mich wenden (support[at]mein.homelinux[dot]com).
Funktionen
Diese Funktionen wird der Mailserver nachher besitzen:
- Mails unter der dynamischen DNS empfangen (Absender und Empfänger du@deine_dyDNS.com)
- Mailboxen für alle Systembenutzer
- Mails filtern und sortieren
- Mails auf Spam und Viren überprüfen
- IMAP+POP3
- Verschlüsselung der Verbindungen
Postfix
Wir fangen mit Postfix an, da er die grundlegenden Funktionen unseres Mailservers beinhaltet.
Benötigte Software-Pakete
Folgende Pakete werden benötigt:
postfix #das "Grundpaket" libsasl2-modules #weil wir uns bei Arcor authentifizieren müssen mailutils #um das Ganze zu testen
Hinweis: Während der Installation werden einem Fragen bezüglich Postfix gestellt, diese werden im nächsten Abschnitt erläutert, also bitte nicht abbrechen oder einfach „durch klicken“.
also installieren wir diese:
user@server:~$ sudo apt-get install postfix libsasl2-modules mailutils
Grundkonfiguration
In diesem Abschnitt geht es um die Fragen, die von Postfix gestellt werden. Hinweis: Haken können mit der [Leertaste] gesetzt werden; nächster Eintrag kann mit [TAB] erreicht werden; bestätigt wird mit der [Eingabetaste].
1. Frage: Allgemeine Art der Konfiguration -> wir wählen "Internet mit Smarthost" -> weiter mit [Eingabetaste] 2. Frage: System-E-Mail-Name -> wir tragen den Namen der dynamischen DNS ein -> weiter mit [Eingabetaste]
Das waren nun leider nicht alle Fragen, deshalb lassen wir den Assistent nocheinmal laufen:
user@server:~$ sudo dpkg-reconfigure postfix
Und beantworten diese Fragen wie folgt (die Reihenfolge kann variieren!):
1. Frage: Allgemeine Art der Konfiguration -> wir wählen "Internet mit Smarthost" -> weiter mit [Eingabetaste] 2. Frage: System-E-Mail-Name -> wir tragen den Namen der dynamischen DNS ein -> weiter mit [Eingabetaste] 3. Frage: SMTP-Relay-Server -> wir tragen "mail.arcor.de" ein -> weiter mit [Eingabetaste] 4. Frage: Empfänger von E-Mails an Root und Postmaster -> wir tragen den Systembenutzer ein, der für den Homeserver zuständig ist -> weiter mit [Eingabetaste] 5. Frage: Weitere Rechner, für die E-Mail akzeptiert werden soll (leere Eingabe: keine): -> hier lassen wir die bereits eingetragenen Hostnamen stehen und fügen die lokale ip des servers und 127.0.0.1 bzw. andere IP-Adressen über die der Server erreichbar ist (auch weiter dynamische DNSen)) -> weiter mit [Eingabetaste] 6. Frage: Synchrone Aktualisierungen(..) -> wir wählen "nein" -> weiter mit [Eingabetaste] 7. Frage: lokale Netze -> hier werden die Rechner eingetragen, die nachher den Server zum Mailversand benutzen wollen eingetragen (durch Komma getrennt) -> weiter mit [Eingabetaste] --Alle weiteren Fragen können bei den Standarteinstellungen belassen werden--
Nun haben wir die Grundkonfiguration abgeschlossen!
Mail über Arcor versenden
Lokale Mails werden jetzt zugestellt, nun müssen wir noch dafür sorgen, dass auch externe Empfänger ihre Mail erhalten. Dazu richten wir eine Authentifizierung am Arcor Smarthost ein.
Dazu öffnen wir die /etc/postfix/main.cf:
user@server:~$ sudo nano /etc/postfix/main.cf
und fügen unten folgendes ein:
smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
Danach legen wir an /etc/postfix/sasl_password:
user@server:~$ sudo touch /etc/postfix/sasl_password
Öffnen diese mit nano:
user@server:~$ sudo nano /etc/postfix/sasl_password
Achtung: Kommentarzeichen (#) weglassen! Ansonsten schlägt die Authentifizierung fehl.
und füllen sie mit folgendem Inhalt (Kommentarzeichen (#) weglassen):
mail.arcor.de username:passwort #username durch Benutzername bei arcor ersetzen, passwort durch das Login-Passwort für den Account bei arcor ersetzen. mail.arcor.de ich:meinpasswort #Beispiel
Danach führen wir diese Befehle aus:
user@server:~$ sudo chmod 600 /etc/postfix/sasl_password #Rechte anpassen user@server:~$ sudo postmap /etc/postfix/sasl_password #In Datenbank umwandeln user@server:~$ sudo /etc/init.d/postfix restart #Postfix neustarten
Testen
Bevor wir nun weitermachen, führen wir einen Test durch, dazu betrachten wir mit einem Terminal die logs:
user@server:~$ sudo tail -f /var/log/mail.log
und in dem anderen versenden wir eine Mail:
user@server:~$ echo "Testtext" | mailx -s "Testbetreff" Empfänger@provider.de #Empfänger darf nicht lokal sein! (also nicht: ich@localhost) user@server:~$ echo "hallo wie gehts?" | mailx -s "hallo" herbert.gerhardt@gmail.com #Beispiel
Die Logs sollten dann so aussehen:
Aug 20 20:19:45 HOST postfix/pickup[27137]: 92BB5614ED: uid=1000 from=<USER> Aug 20 20:19:45 HOST postfix/cleanup[27202]: 92BB5614ED: message-id=<20100820181945.92BB5614ED@HOST> Aug 20 20:19:45 HOST postfix/qmgr[27138]: 92BB5614ED: from=<USER@dynDNS>, size=392, nrcpt=1 (queue active) Aug 20 20:19:48 HOST postfix/smtp[27204]: 92BB5614ED: to=<EMPFÄNGER>, relay=mail.arcor.de[151.189.21.116]:25, delay=3.4, delays=0.37/0.18/1.7/1.1, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 078DF21246B) Aug 20 20:19:48 HOST postfix/qmgr[27138]: 92BB5614ED: removed
Demnach haben wir jetzt schon einmal einen (fast) funktionstüchtigen Postfix….
Kleinigkeiten
Natürlich lassen sich auch noch diverse Dinge anpassen.
Absender setzen
Unter Umständen will man für bestimmte Benutzer einen anderen Absender setzen. Zum Beispiel, dass Mail aus PHP heraus nicht als Absender www-data@dynDNS sondern noreply@dynDNS.
Dazu fügt man der /etc/postfix/main.cf folgende Zeile hinzu:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
Danach öffnen wir /etc/postfix/sender_canonical mit nano:
user@server:~$ sudo nano /etc/postfix/sender_canonical
und fügen folgendes ein:
www-data noreply@dynDNS #nun hat www-data nicht mehr den Absender www-data sonder noreply, dynDNS sollte durch die eigene dynamische DNS ersetzt werden. user1 user2@dynDNS #hier verschickt user1 unter dem Absender von user2 user3 user2@gmail.com #und hier user3 unter seiner/einer gmail Adresse
Nun führt man noch folgende Befehle aus:
user@server:~$ sudo postmap /etc/postfix/sender_canonical user@server:~$ sudo /etc/init.d/postfix restart
und die Absender sind manipuliert!
Aliase
Aliase bieten eine Möglichkeit der Umleitung.
Als erstes öffnet man die Datei /etc/aliases:
user@server:~$ sudo nano /etc/aliases
der Inhalt wird folgendermaßen festgelegt:
postmaster: root #mail, die an postmaster gerichtet ist, wird an root weitergeleitet
In dieser Art kann weiter ergänzt werden (Beispiele)(auf “:“ achten):
#interne weiterleitung: webmaster: root #mail, die an webmaster gerichtet ist, geht an root www-data: root #mail, die an www-data soll, kommt bei root an root: user1 #mail, die für root bestimmt ist, geht an user1 #externe weiterleitung: user2: user2@gmail #mail für user2 wird an seine gmail-adresse geschickt #"nicks" coolz: user3 #user3 ist nun unter coolz@dynDNS erreichbar icke: user4 #und user4 hat noch seine alias icke, so lassen sich extra mailboxen für jeden seiner Nicknamen einsparen, durch Anlegen eines Alias
Nach erfolgreicher Änderung sind noch folgende Befehle nötig:
user@server:~$ sudo newaliases #aliase übernehmen user@server:~$ sudo /etc/init.d/postfix restart #postfix neustartem
Verschlüsselung
Postfix unterstützt natürlich auch Verschlüsselung via TLS/SSL. Diese ist unter Umstände standardmäßig aktiviert, trotzdem sollte man erst einmal überprüfen, ob TLS wirklich aktiviert ist.
In der /etc/postfix/main.cf muss dazu folgendes stehen:
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
und zwar ohne # davor!
Dovecot
Dovecot ist ein leicht zu konfigurierender IMAP und POP3 Server, der sich unter anderem in postfix integrieren lässt.
Software-Pakete
Folgende Pakete werden benötigt
dovecot-common #dovecot dovecot-postfix #Integration in postfix (in Debian nicht enthalten) dovecot-imapd #Unterstützung für IMAP dovecot-pop3d #Unterstützung für POP3
Ubuntu
Unter Ubuntu installieren wir die Pakete wie folgt:
user@server:~$ sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d dovecot-postfix
Das Paket dovecot-postfix integriert darauf hin dovecot in postfix.
Hinweise zu dovecot-postfix
Dieses Paket ändert den mailbox_command in Postfix. Darüber hinaus werden bestimmte Paramter, die in /etc/dovecot/dovecot.conf gesetzt werden durch Konfigurationsdateien in /etc/dovecot/conf.d/ überschrieben. Im Normalfall ist dies nicht tragisch, sondern sogar erwünscht. Bei besonderen Konfigurationen kann dies jedoch der Grund eines Fehlverhaltens sein. Wenn Konfigurationsparameter nicht übernommen werden, sollte man zuerst einen Blick in folgende Dateien werfen (falls jene existieren):
/etc/dovecot/conf.d/01-mail-stack-delivery.conf #Bis jetzt nur bei Natty entdeckt
/etc/dovecot/conf.d/01-dovecot-postfix.conf #Bis jetzt bei Lucid entdeckt (evtl. auch bei anderen Ubuntu-Version vorhanden??)
/etc/dovecot/conf.d/* #Falls keine der oberen Dateien, das Ganze mit einer Wildcard (''*'') versuchen
Debian
dovecot-postfix scheint es unter Debian nicht zu geben, deshalb integrieren wir Dovecot dort nachher manuell in Postfix. Die Pakete werden unter Debian so installiert:
user@server:~$ sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d
Hinweis: IPv6
Sollte bei der Installation von Dovecot folgender Fehler auftauchen:
dovecot-imapd (1:2.1.7-2) wird eingerichtet ... Creating config file /etc/dovecot/conf.d/20-imap.conf with new version [....] Restarting IMAP/POP3 mail server: dovecotError: socket() failed: Address family not supported by protocol Error: service(imap-login): listen(::, 143) failed: Address family not supported by protocol Error: socket() failed: Address family not supported by protocol Error: service(imap-login): listen(::, 993) failed: Address family not supported by protocol Fatal: Failed to start listeners failed! invoke-rc.d: initscript dovecot, action "restart" failed. dpkg: Fehler beim Bearbeiten von dovecot-imapd (--configure): Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück (..) #noch mehr Fehler dieser Art
…, kann dieser Fehler behoben werden, wenn IPv6 aktiviert wird:
user@server:~$ sudo modprobe ipv6
Konfiguration
Bevor die Konfiguration beginnen kann, muss zunächst überprüft werden, welche Version von Dovecot auf dem System installiert ist:
user@server:~$ dpkg -l | grep dovecot ii dovecot-common 1:2.1.7-2 Transitional package for dovecot (..)
Hier ist also ein Dovecot 2.x installiert. Alternativ kann auch die Version 1.x installiert sein. Im Folgenden wird zwischen diesen beiden Versionen unterschieden. Der Grund dafür liegt in veränderten Pfaden zu den Konfigurationsdateien.
SSL
Dovecot 1.x
Um SSL zu nutzen, muss in der /etc/dovecot/dovecot.conf folgendes stehen:
# Protocols we want to be serving: # imap imaps pop3 pop3s protocols = imap imaps pop3 pop3s
und vor den Pfaden zu den Zertifikaten muss das Rautezeichen (#) entfernt werden:
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
Dovecot 2.x
In der /etc/dovecot/conf.d/10-ssl.conf muss hierfür das Rautezeichen vor ssl entfernt werden:
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> ssl = yes
Auch sollten in der gleichen Datei die Pfade zu den Zertifikaten einkommentiert sein (ohne # davor versehen) – also so aussehen:
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem
Dovecot an Postfix anpassen (als LDA)
Dovecot 1.x
Dazu muss in der /etc/dovecot/dovecot.conf der LDA von Dovecot aktiviert werden,
dazu sucht man den Abschnitt LDA:
##
## LDA specific settings
##
Hinweis: die “(…)“ symbolisieren, dass in dieser Vorlage der dort stehende Code ausgelassen wurde, weil an ihm nichts verändert wird.
Diesen passt man wie folgt an:
protocol lda {
# Address to use when sending rejection mails.
postmaster_address = postmaster@localhost
(...)
# Support for dynamically loadable plugins. mail_plugins is a space separated
# list of plugins to load.
#mail_plugins =
mail_plugins = sieve
mail_plugin_dir = /usr/lib/dovecot/modules/lda
(...)
}
Dovecot 2.x
Hinweis: die “(…)“ symbolisieren, dass in dieser Vorlage der dort stehende Code ausgelassen wurde, weil an ihm nichts verändert wird.
Hier öffnen wir die /etc/dovecot/conf.d/15-lda.conf und passen diese wie folgt an:
# Address to use when sending rejection mails.
# Default is postmaster@<your domain>.
postmaster_address = postmaster@localhost
(...)
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
(...)
Erweiterung für Debian: Dovecots LDA mit Postfix
Wie bereits erwähnt muss man in Debian selbst Hand anlegen, um es Postfix zu ermöglichen, den LDA von Dovecot zu verwenden. Nachdem der LDA von Dovecot (siehe übergeordnetes Kapitel) aktiviert wurde, muss Postfix noch etwas angepasst werden.
Dazu fügen wir in der /etc/postfix/main.cf
user@server:~$ sudo nano /etc/postfix/main.cf
am Ende folgende Zeile ein:
mailbox_command = /usr/lib/dovecot/deliver
..und starten Postfix neu (reload reicht unter Umständen auch schon aus):
user@server:~$ sudo /etc/init.d/postfix restart
Anschließend kann auch Sieve mit Debian verwendet werden.
Hinweis: Es kann sein, dass diese Zeile nicht genügt und der Dovecot-LDA von Postfix nicht richtig genutzt werden kann. Siehe dazu bitte im Dovecot Wiki für Version 1.x bzw. Version 2.x.
Rechte anpassen
Nun müssen wir noch die Rechte anpassen:
user@server:~$ sudo chmod 644 /etc/dovecot/dovecot.conf
Dovecot neustarten
Nun starten wir Dovecote neu:
user@server:~$ sudo /etc/init.d/dovecot restart
Testen
wir betrachten nun das Mail-log:
user@server:~$ sudo tail -f /var/log/mail.log
Nun verschicken wir eine Mail an einen lokalen Systembenutzer:
user@server:~$ echo "Testtext" | mailx -s "Testbetreff" user@localhost
und schauen, was in den Logs vor sich geht.
Wenn die Konfig stimmt erscheint solch eine Nachricht:
Aug 20 23:03:12 HOST postfix/qmgr[6646]: 6B9C5616B4: from=<user@dynDNS>, size=382, nrcpt=1 (queue active)
Aug 20 23:03:12 HOST dovecot: deliver(user): msgid=<20100820210312.6B9C5616B4@HOST>: saved mail to INBOX
Aug 20 23:03:12 HOST postfix/local[6896]: 6B9C5616B4: to=<user@localhost>, relay=local, delay=0.53, delays=0.38/0.01/0/0.14, dsn=2.0.0, status=sent (delivered to command: /usr/lib/dovecot/deliver -c /etc/dovecot/conf.d/01-dovecot-postfix.conf -n -m "${EXTENSION}")
Aug 20 23:03:12 HOST postfix/qmgr[6646]: 6B9C5616B4: removed
Als letztes greifen wir mit einem E-mail Clienten (z.B.: Evolution) auf den Mailserver zurück (via IMAP oder POP3) mit den Benutzerdaten (Benutzername/Passwort) eines Systembenutzers, dabei müsste diese Nachricht in den Logs auftauchen:
Aug 20 23:03:19 HOST dovecot: imap-login: Login: user=<user>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS
..und der Mailclient ruft schön die gerade eben versendete Mail ab…
Problembehebung
Falls eine Fehlermeldung erscheint, die darauf hinwiest, dass die „Mailboxen nicht gefunden“ werden konnten:
Oct 2 14:40:42 host dovecot: imap-login: Login: user=<user>, method=PLAIN, rip=192.168.2.1, lip=192.168.2.1, TLS Oct 2 14:40:42 host dovecot: IMAP(user): mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/user Oct 2 14:40:42 host dovecot: IMAP(user): Fatal: Namespace initialization failed
…, sollte zunächst überlegt werden, ob der Mailserver Mbox oder Maildir verwenden soll. Ein Vergleich findest du hier. Steht die Wahl fest, kann fortgefahren werden.
Für Dovecot Version 1.x folgende Zeile in der /etc/dovecot/dovecot.conf im Abschnitt
##
## Mailbox locations and namespaces
##
hinzufügen:
#wenn mbox verwendet werden soll mail_location = mbox:~/mail:INBOX=/var/mail/%u #bei verwendung von maildir: mail_location = maildir:~/Maildir
Bei Dovecot 2.x in der /etc/dovecot/conf.d/10-mail.conf den Parameter mail_location wie folgt setzen:
#wenn mbox verwendet werden soll mail_location = mbox:~/mail:INBOX=/var/mail/%u #bei verwendung von maildir: mail_location = maildir:~/Maildir
Anschließend die Testprozedur samt Neustart von Dovecot wiederholen.
Sollte Dovecot dann immer noch den Dienst mit folgender Meldung quittieren:
Aug 20 01:45:26 HOST dovecot: lda(user): Error: open(/var/mail/user) failed: Permission denied (euid=1000(user) egid=1000(user) missing +w perm: /var/mail, we're not in group 8(mail), dir owned by 0:8 mode=0775) Aug 20 01:45:26 HOST dovecot: lda(user): Error: Opening INBOX failed: Mailbox doesn't exist: INBOX Aug 20 01:45:26 HOST dovecot: lda(user): msgid=<20120819232757.94DB521C4A@HOST>: save failed to open mailbox INBOX: Internal error occurred. Refer to server log for more information. [2012-08-20 01:45:25] Aug 20 01:45:26 HOST dovecot: lda(user): Error: BUG: Saving failed to unknown storage Aug 20 01:45:26 HOST postfix/local[29616]: B504921C57: to=<user@HOST>, relay=local, delay=515, delays=514/0.12/0/1.2, dsn=4.3.0, status=deferred (temporary failure)
hilft das Ändern der Berechtigungen von /var/mail evtl. weiter (die Lösung ist aber nicht unbedingt ideal):
user@server:~$ sudo chmod 777 /var/mail
Anmerkung: Root-Login
Hinweis: bei diesem Befehl wird nach einem Passwort gefragt, dieses Passwort dient später zum Login über Dovecot.
Dovecot lässt standardmäßig keine root-Logins zu, deshalb müssen z.B. Dockstar-Benutzer ein extra Benutzer angelegen, auf den die Mails umgeleitet werden:
user@server:~$ sudo adduser BENUTZER #BENUTZER durch zu erstellenden Benutzer ersetzten user@server:~$ sudo adduser ich #Beispiel mit Benutzer ich
Auf den erstellten Benutzer sollen nun die Mails für root weitergeleitet werden, dazu bearbeitet man die /etc/aliases
user@server:~$ sudo nano /etc/aliases
und fügt am Ende der Datei folgendes ein
root: BENUTZER #BENUTZER durch denn erstellten Benutzer ersetzten root: ich #Beispiel mit Benutzer ich
danach ladet man die Aliase neu und startet Postfix neu:
user@server:~$ sudo newaliases user@server:~$ sudo /etc/init.d/postfix restart
Sieve
Sieve ist ein Filter zum Filtern von E-Mails. So wie wir jetzt unseren Mailserver konfiguriert haben, entfällt das manuelle Hochladen und Einsetzen einer Filterdatei. Jeder Benutzer hat seinen eigenen Filter, der die Mails filtert, die an ihn gerichtet sind. Um eine Ordnerstruktur nutzen zu können, in die Sieve Mails sortiert wird IMAP benötigt!
Filter anlegen
Wir müssen einfach nur in dem Home des jeweiligen Systembenutzers folgende Datei anlegen:
.dovecot.sieve
und diese mit dem Filterskript füllen. Diese Datei legen wir folgender maßen an:
user@server:~$ touch ~/.dovecot.sieve # "~" entspricht dem Home des Users, mit dem gerade auf dem Server gearbeitet wird
und öffnen sie so:
user@server:~$ nano .dovecot.sieve
Filter definieren
In diesem Tutorial werden wir nicht alle Sieve Möglichkeiten durch nehmen. Es geht hier nur um das Grundlagenverständnis. Eine sehr umfangreiche Anleitung findet sich auf tty1.net. Weitere Informationen finden sich in der Wikipedia und auf ubuntuusers.de.In diesem Fall wird unser Server wird nicht über sieveshell angesprochen! Die Filterdatei muss nur unter ~/.dovecot.sieve abgelegt werden.
Einfaches Beispiel
Im Dateiheader der Filterdatei müssen die Erweiterungen stehen, die benötigt werden:
require "fileinto"; /* Modul zur Verschiebung der Mails, immer erforderlich */ require "reject"; /* Modul zur Zurückweisung, optional */ require "vacation"; /* Modul für Abwesenheitsbenachrichtigungen, optional */
Anschließend folgt das Skript:
if header :contains "from" ["amazon.de", "amazon.com"] { fileinto "INBOX.amazon"; } #wenn der Header der E-Mail als Absender "amazon.de" oder "amazon.com" enthällt landet sie im Posteingang im Ordner "amazon"
elsif header :is "subject" "weekly newsletter" { fileinto "INBOX.newsletter.weekly-newsletter"; } #wenn der Header als Betreff "weekly newsletter" genau enthällt wird er nach "INBOX.newsletter.weekly-newsletter" verschoben
elsif allof (header :contains "from" "neu@web.de", header :contains "subject" "news") { fileinto "INBOX.sinnlos"; } # wenn der Header also Absender "neu@web.de" und Betreff "news" enthällt, wird er nach "INBOX.sinnlos" verschoben.
else { fileinto "INBOX"; } #alles andere landet im Posteingang (INBOX)
Nochmal zum Aufbau:
if #startet mit "if" elsif #ansonsten, wenn... elsif elsif (..) #noch mehr "elsif" (so viele du brauchst) elsif else #der Rest, auf den keine der Kriterien zutreffen steht am Schluss mit "else"
Übersicht über alle möglichen Befehle:
findet sich hier → weitere Beispiele
Hinweis zur IMAP-Server Ordnerstruktur:
In IMAP Ordnerstrukturen gibt es keine “/“ diese werden durch “.“ ersetzt. Wenn die E-Mail in den Eingang gelangen soll (und nicht in SPAM, TRASH und co.) muss immer ein INBOX davor stehen.
Beispiel:
Im E-Mailprogramm legen wir im Posteingang den Ordner spam an. Der Pfad, den sieve nutzen müsste wäre INBOX.spam.
Einfacher: ManageSieve
Um die Filterregeln direkt über das Mailprogramm (MUA) verwalten zu können, nutzen wir ManageSieve. Wie du ManageSieve in deinem MUA nutzen kannst, erfährst du in der Dokumentation zu jenem.
Dovecot 1.x
Hier erweitert man den protocols Parameter in der /etc/dovecot/dovecot.conf um managesieve:
# Protocols we want to be serving: # imap imaps pop3 pop3s protocols = imap imaps pop3 pop3s managesieve
Dovecot 2.x
In Dovecot 2.x installiert man statt dessen das Paket dovecot-managesieved und startet Dovecot neu (falls dies nicht bereits durch die Installationsroutine erledigt wurde):
user@server:~$ sudo apt-get install dovecot-managesieved
Fetchmail
Fetchmail dient dazu Mails von einem anderen Mailserver abzuholen. So können die Mails dann lokal von Sieve sortiert und eingeordnet werden.
Benötigte Pakete
Es wird folgendes Pakete benötigt:
fetchmail
dieses installieren wir so:
user@server:~$ sudo apt-get install fetchmail
Konfigurieren
Die Konfiguration erfolgt über die /etc/fetchmailrc für alle Benutzer global.
Wir öffnen /etc/fetchmailrc wie folgt:
user@server:~$ sudo nano /etc/fetchmailrc
Der Inhalt wird folgender maßen festgelegt:
## Allgemeine Einstellungen
set postmaster "richard" #postmaster eintragen; hier: richard
set bouncemail
set no spambounce
set properties ""
set syslog
set daemon 300 #alle wie viel Sekunden solle Fetchmail ausgeführt werden.
## Beispielsyntax:
poll MAILSERVER with proto IMAP/POP3
user 'USERNAME_AUF_EMAILSERVER' there with password 'PASSWORT' is 'SYSTEMBENUTZER_FÜR_DEN_DIE_MAILS_SIND' here options keep ssl
## Beispiel:
#hier holt der Systembenutzer richard seine Mails per POP3 von web.de mit seinem Nutzernamen richard@web.de
#sein Passwort bei web.de ist "sagichnicht"
#die Mails werden auf dem Server nicht gelöscht (keep) und verschlüsselt abgerufen (ssl)
#er setzt interval3, so dass fetchmail nur alle 3 Mal Ausführen seine Mails holt (web.de freemail Nutzer können nur alle 15 Minuten E-Mails abholen)
poll pop3.web.de with proto POP3 interval 3
user 'richard@web.de' there with password 'sagichnicht' is 'richard' here options keep ssl
## anderes Beispiel:
#Der Systembenutzer herbert holt seine Mails vom IMAP-Server von Googlemail.
#dort hat er den Nutzernamen "herbert.seigel", mit seinem Passwort "bekommstdunicht"
#anders als richard löscht fetchmail die gerade eben abgeholten E-Mails ("keep" fehlt)
#auch er lädt seine Mails verschlüsselt ("ssl")
poll imap.googlemail.com with proto IMAP
user "herbert.seigel@googlemail.com" there with password "bekommstdunicht" is "herbert" here ssl
Fetchmail als Daemon
Um die Mails nun regelmäßig abzurufen, müssen wir fetchmail noch als Daemon starten, dazu öffnen wir die Datei /etc/default/fetchmail:
user@server:~$ udo nano /etc/default/fetchmail
und setzen START_DAEMON von „no“:
# Declare here if we want to start fetchmail. 'yes' or 'no' START_DAEMON=no
auf „yes“:
# Declare here if we want to start fetchmail. 'yes' or 'no' START_DAEMON=yes
danach starten wir fetchmail:
user@server:~$ sudo /etc/init.d/fetchmail start
Testen
Nun beginnt fetchmail in den festgelegten Abständen Mails abzurufen.
Zum Überwachen kann man das Mail-Log verwenden:
user@server:~$ sudo tail -f /var/log/mail.log
das könnte zum Beispiel bei 3 E-Mails, die nicht gelöscht werden so aussehen:
Aug 23 21:05:16 HOST[11130]: Nachricht NUTZER@ANBIETER:3 von 3 wird gelesen (1038 Bytes) nicht gelöscht
Aus Fehlermeldungen kann man meistens den Grund entnehmen.
Spam- und Virenfilter
Wenn der ISP die Emails nicht, oder nur unzulänglich auf Viren und Spam überprüft, oder der Homeserver der direkte Empfänger für eine Domain ist, empfiehlt es sich Möglichkeiten zur Spam- und Virenbekämpfung zu installieren. Maßnahmen zur Spam- und Virenbekämpfung sind für den Betrieb eines einfachen Mailservers keine Voraussetzung, und daher natürlich optional. Diese 3 Programme sind die Grundbausteine für ein einfache und schnelle Grundinstallation zur Spam- und Virenbekämpfung.
amavisd-new #dient zur Integration von Spam- und Virenfiltern in einen MTA clamav-daemon #Virenscanner spamassassin #Spamfilter
user@server:~$ sudo apt-get install amavisd-new clamav-daemon spamassassin
Hinweis: Der Kampf gegen Viren und Spam ist keine exakte Wissenschaft, weshalb es immer wieder zu einer falschen Klassifizierung (false positive) kommen kann. Um seinen Mailserver genau an die eigenen Bedürfnisse anzupassen benötigt es mitunter einiges an Geduld. Fortgeschrittene Linux-Kenntnisse sind dabei ebenfalls von Vorteil.
ClamAV
Um ClamAV für die Verwendung mit AmavisNew vorzubereiten muss lediglich der Benutzer clamav der Gruppe amavis hinzugefügt werden.
user@server:~$ sudo adduser clamav amavis
Weitere Änderungen müssen nicht vorgenommen werden. Der ClamAV-Daemon wird automatisch neu gestartet und aktuakisiert seine Signaturdatenbanken dank des Pakets clamav-freshclam regelmäßig. Die Anzahl der Aktualisierungen pro Tag kann recht einfach geändert werden. Üblicherweise ist hier ein Wert von 24 (1x pro Stunde) voreingestellt, ClamAV empfiehlt allerdings 96 (4x pro Stunde).
user@server:~$ sudo nano /etc/clamav/freshclam.conf
# Check for new database 4 times per day Checks 24
Um eine Aktualisierung der Signaturdatenbanken von Hand auszuführen oder die Aktualität zu überprüfen kann mit folgendem Befehl ein Update erzwungen werden.
user@server:~$ sudo freshclam
ClamAV kann bereits mit einer Vielzahl von Dateitypen umgehen. AmavisNew informiert unter /var/log/mail.log bei jedem Neustart über bereits installierte und noch fehlende Decoder für Dateitypen. Um bestimmte Dateitypen zu unterstützen können weitere Decoder bei Bedarf nachinstalliert werden.
| Dateiendung | Paket |
|---|---|
| .F | deaktiviert1) |
| .lzo | lzop |
| .rpm | rpm |
| .7zip | p7zip |
| .rar | unrar-free |
| .arj | arj |
| .arc | nomarch |
| .zoo | zoo |
| .lha | deaktiviert2) |
| .doc | ripole |
| .cab | cabextract |
| .exe | arj/unrar-free |
Nun muss der Daemon noch neu gestartet werden um unsere Änderungen zu übernehmen.
user@server:~$ sudo /etc/init.d/clamav-daemon restart
SpamAssassin
Um SpamAssassin beim Systemstart zu laden und regelmäßig Ausschau nach neuen Filterregeln zu halten, muss die Datei /etc/default/spamassassin editiert werden, und die Werte für ENABLED und CRON auf 1 gesetzt werden.
user@server:~$ sudo nano /etc/default/spamassassin
# Change to one to enable spamd ENABLED=1 (...) # Cronjob # Set to anything but 0 to enable the cron job to automatically update # spamassassin's rules on a nightly basis CRON=1
user@server:~$ sudo /etc/init.d/spamassassin start
Razor und Pyzor
Falls die Filterregeln von SpamAssassin nicht ausreichen, können weitere Datenbanken hinzugefügt werden. Die Pakete razor und pyzor werden automatisch erkannt und können einzeln oder gemeinsam nachinstalliert werden.
user@server:~$ sudo apt-get install razor pyzor
user@server:~$ sudo /etc/init.d/spamassassin restart
Abhängig von der Hardware des Homeservers und der installierten Programme können diese beiden Pakete nicht nur die Mailzustellung ausbremsen, sondern auch das gesamte System verlangsamen. How do I get SpamAssassin to run faster?
AmavisNew
Die Konfigurationsdateien von AmavisNew befinden sich im Verzeichnis /etc/amavis/conf.d/. Die Dateien in diesem Verzeichnis sind numerisch geordnet. Dateien mit einer höheren Nummer überschreiben dabei die Konfiguration einer Datei mit niedrigerer Nummer. Es wird nicht empfohlen diese Dateien selbst zu editieren. Besser ist es die vorhandenen Dateien als Referenz zu verwenden, und die eigentliche Konfiguration in /etc/amavis/conf.d/50-user oder einer neuen Datei zu speichern.
user@server:~$ sudo nano /etc/amavis/conf.d/50-user
Wenn der Virenscanner/Spamfilter deaktiviert werden soll, müssen die entsprechenden Zeilen mit “#“ auskommentiert werden.
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
In der Standardeinstellung wird am Beginn des Betreffs ein '***SPAM*** ' eingefügt, um Spam zu kennzeichnen. Dies kann aber durchaus lästig sein, wenn eine Email irrtümlich als Spam klassifiziert wurde. Vor allem in der Anfangszeit, wenn die Werte noch nicht an die eigenen Bedürfnisse angepasst wurden, ist es sinnvoller die Email im Header zu kennzeichen, und über entsprechende Filter in den Spam-Ordner zu verschieben.
#$sa_spam_subject_tag = '***SPAM*** '; $sa_spam_subject_tag = undef;
In der nächsten Option wird festgelegt ab welchem Wert Informationen zum Spam-Status in den Header der Nachricht geschrieben werden. Desto höher der Wert, desto wahrscheinlicher ist die Nachricht Spam. Um die Funktion des Spamfilters zu prüfen, und die Informationen im Header bei jeder Email anzuzeigen, sollte dieser Wert zunächst sehr niedrig eingestellt werden. Dies kann nach erfolgreichen Tests wieder auf den Standardwert zurückgesetzt werden.
#$sa_tag_level_deflt = 2.0; $sa_tag_level_deflt = -999;
Die nächste Einstellung legt fest, ab welchem Wert eine Nachricht eindeutig (X-Spam-Flag YES) als Spam gekennzeichnet wird.
$sa_tag2_level_deflt = 6.31;
Ab welchem Wert soll AmavisNew tun, was unter $final_spam_destiny festgelegt wurde.
$sa_kill_level_deflt = 6.31;
Hier wird festgelegt, was mit Emails passieren soll, die eindeutig als Spam gekennzeichnet wurden. Um zu kontrollieren, ob die eingestellten Werte unseren Bedürfnissen entsprechen werden die Nachrichten akzeptiert, von Postfix an Dovecot ausgeliefert und vom LDA-Plugin Sieve gefiltert. Mögliche Optionen sind D_PASS3), D_BOUNCE4), D_REJECT5), D_DISCARD6).
$final_spam_destiny=D_PASS;
Ausgabe im Header der Email in Form von X-Virus-Scanned Debian amvisd-new at server.localhost.
$X_HEADER_LINE = "Debian $myproduct_name at $mydomain";
Wenn im Header trotz einer sehr niedrigen Einstellung von $sa_tag_level_deflt keine Informationen ausgegeben werden, müssen die Domains korrekt angegeben werden.
#@local_domains_acl = ( ".$mydomain" ); #@local_domains_acl = ( ".$mydomain","localhost","hostname",".domain" ); @local_domains_acl = ( "." );
Nun muss der Daemon noch neu gestartet werden, um alle Einstellungen zu übernehmen.
user@server:~$ sudo /etc/init.d/amavis restart
Integration in Postfix
Da alle wichtigen Einstellungen von ClamAV, SpamAssassin, AmavisNew getätigt wurden kann Postfix nun mitgeteilt werden, dass er die Emails von AmavisNew (an Port 10024) überprüfen lässt, bevor er sie wieder entgegen nimmt (an Port 10025) und an Dovecot ausliefert.
user@server:~$ sudo postconf -e content_filter=smtp-amavis:[127.0.0.1]:10024
Hinweis: Der Befehl postconf -e fügt den angebenen Parameter direkt in die Konfigurationsdatei /etc/postfix/main.cf ein, und lädt die Konfiguration von Postfix anschließend neu. Bestehende Parameter werden dabei überschrieben, was die Konfigurationsdatei einfach und frei von Redundanzen hält. Durch das automatische Einlesen der Datei wird die neue Konfiguration sofort übernommen, und die zusätzliche Eingabe von postfix reload oder /etc/init.d/postfix reload ist nicht mehr notwendig.
user@server:~$ sudo nano /etc/postfix/master.cf
Achtung: Die Leerzeichen am Anfang der Zeilen sind beabsichtigt und dürfen nicht entfernt werden!
Das Folgende muss am Ende der Datei hinzugefügt werden.
smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients=
user@server:~$ sudo service postfix reload
Spam- und Virenfilter testen
Die Konfiguration ist soweit abgeschlossen. Nun sollte noch die Funktionstüchtigkeit des Mailservers überprüft werden.
user@server:~$ sudo echo "testtext" | mail -s "testbetreff" benutzername
Eine erfolgreiche Zustellung sollte etwa so aussehen.
postfix/pickup[5010]: D6D8C1FE32: uid=0 from=<root> postfix/cleanup[5021]: D6D8C1FE32: message-id=<20110603101628.D6D8C1FE32@server.localhost> postfix/qmgr[5008]: D6D8C1FE32: from=<root>, size=292, nrcpt=1 (queue active) postfix/smtpd[5027]: connect from localhost[127.0.0.1] postfix/smtpd[5027]: 0E664226D8: client=localhost[127.0.0.1] postfix/cleanup[5021]: 0E664226D8: message-id=<20110603101628.D6D8C1FE32@server.localhost> postfix/qmgr[5008]: 0E664226D8: from=<root>, size=906, nrcpt=1 (queue active) amavis[4994]: (04994-01) Passed CLEAN, <root> -> <benutzer@server.localhost>, Message-ID: <20110603101628.D6D8C1FE32@server.localhost>, mail_id: h5pxwOuOL8Jd, Hits: 0, size: 292, queued_as: 0E664226D8, 3868 ms postfix/smtp[5022]: D6D8C1FE32: to=<benutzer@server.localhost>, orig_to=<benutzer>, relay=127.0.0.1[127.0.0.1]:10024, delay=4.4, delays=0.18/0.28/0.03/3.9, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=04994-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 0E664226D8) postfix/qmgr[5008]: D6D8C1FE32: removed dovecot: deliver(benutzer): msgid=<20110603101628.D6D8C1FE32@server.localhost>: saved mail to INBOX postfix/local[5015]: 0E664226D8: to=<benutzer@server.localhost>, relay=local, delay=0.1, delays=0.02/0/0/0.08, dsn=2.0.0, status=sent (delivered to command: /usr/lib/dovecot/deliver) postfix/qmgr[5008]: 0E664226D8: removed
Nun versenden wir auch noch eine Spammail.
user@server:~$ sudo sendmail benutzername < /usr/share/doc/spamassassin/examples/sample-spam.txt
postfix/pickup[5010]: 86DCA226D5: uid=0 from=<root> postfix/cleanup[5021]: 86DCA226D5: message-id=<GTUBE1.1010101@example.net> postfix/qmgr[5008]: 86DCA226D5: from=<root>, size=935, nrcpt=1 (queue active) postfix/smtpd[5037]: connect from localhost[127.0.0.1] postfix/smtpd[5037]: 3253F226DF: client=localhost[127.0.0.1] postfix/cleanup[5021]: 3253F226DF: message-id=<GTUBE1.1010101@example.net> postfix/qmgr[5008]: 3253F226DF: from=<root>, size=1696, nrcpt=1 (queue active) amavis[4995]: (04995-01) Passed SPAM, <root> -> <benutzer@server.localhost>, quarantine: s/spam-sTwxatzfn-i8.gz, Message-ID: <GTUBE1.1010101@example.net>, mail_id: sTwxatzfn-i8, Hits: 1004.054, size: 935, queued_as: 3253F226DF, 3700 ms postfix/smtp[5022]: 86DCA226D5: to=<benutzer@server.localhost>, orig_to=<benutzer>, relay=127.0.0.1[127.0.0.1]:10024, delay=3.8, delays=0.09/0/0.03/3.7, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=04995-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 3253F226DF) postfix/qmgr[5008]: 86DCA226D5: removed dovecot: deliver(benutzer): msgid=<GTUBE1.1010101@example.net>: saved mail to INBOX postfix/local[5011]: 3253F226DF: to=<benutzer@server.localhost>, relay=local, delay=0.28, delays=0.06/0/0/0.22, dsn=2.0.0, status=sent (delivered to command: /usr/lib/dovecot/deliver) postfix/qmgr[5008]: 3253F226DF: removed
Greylisting
Greylisting ist eine einfache und ressourcenschonende Möglichkeit um Spam zu reduzieren. Dabei wird dem versendenten Mailserver beim ersten Zustellversuch eine Meldung über einen temporären Fehler übermittelt. Wenn der versendente Mailserver nach einer bestimmten Zeit erneut versucht diese Nachricht zuzustellen, wird diese und alle weiteren Nachrichten des selben Absenders akzeptiert. Diese Methode funktioniert deshalb so gut, weil viele Programme von Spamversendern nicht RFC-konform arbeiten, und somit die übermittelte Fehlermeldung ignorieren. Beim Versandt über eigene Mailserver fehlen oft Kapazitäten, um so viele (ein Großteil der ISPs verwendet Greylisting) Nachrichten erneut zuzustellen. Weiters können die Absender durch die Zeitverzögerung mit den bis dahin möglicherweise schon aktualisierten Blacklisten von z.B. SpamAssassin geblockt werden.
Hinweis: Greylisting macht nur dann Sinn, wenn der eigene Mailserver auch der direkte Empfänger einer Nachricht ist. Wenn die Nachrichten ausschließlich über einen MRA wie fetchmail abgeholt werden ist Greylisting nutzlos.
Installation von Postgrey
Mit Postgrey kann Greylisting ohne viel Aufwand auf unserem Mailserver aktiviert werden.
user@server:~$ sudo apt-get install postgrey
Konfiguration von Postgrey
Unter /etc/default/postgrey können nun die Einstellungen vorgenommen werden.
user@server:~$ sudo nano /etc/default/postgrey
Durch die Option –inet=10023 kann der verwendete Port eingestellt werden. Diesen können wir bei Bedarf ändern, und müssen uns für später merken. Mit –delay=300 können wir definieren, nach welchem Zeitraum eine erneute Zustellung frühestens akzeptiert wird. Der Zeitraum bis zu einem erneuten Zustellversuch ist dabei vom versendenten Mailserver abhängig. Weitere mögliche Optionen sind unter man postgrey ersichtlich.
# you may want to set # --delay=N how long to greylist, seconds (default: 300) # --max-age=N delete old entries after N days (default: 35) # see also the postgrey(8) manpage POSTGREY_OPTS="--inet=10023 --delay=300"
Nun muss Postfix noch mitgeteilt werden, dass er Postgrey verwenden soll.
user@server:~$ sudo nano /etc/postfix/main.cf
Am Ender der Zeile von smtpd_recipient_restrictions wird nun check_policy_service inet:127.0.0.1:10023 hinzugefügt. Wenn in /etc/default/postgrey ein anderer Port definiert wurde, muss er entsprechend adaptiert werden.
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
Um die neue Konfiguration zu übernehmen muss die Konfiguration von Postfix noch neu geladen werden.
user@server:~$ sudo postfix reload
Funktionstest von Postgrey
Im Logfile unter /var/log/mail.log sollten nun ähnliche Einträge zu sehen sein, sobald eine neue Nachricht eintrifft.
postgrey[11389]: action=greylist, reason=new, client_name=smtp.example.net, client_address=10.10.10.10, sender=absender@example.net, recipient=empfaenger@example.com postfix/smtpd[11648]: NOQUEUE: reject: RCPT from smtp.example.net[10.10.10.10]: 450 4.2.0 <empfaenger@example.com>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html; from=<absender@example.net> to=<empfaenger@example.com> proto=ESMTP helo=<smtp.example.net>
Wenn der sendente Mailserver es nach der eingestellten Zeit (Standardwert ist 5 Minuten) nochmals probiert, sollte eine ähnliche Meldung zu sehen.
postgrey[11728]: action=pass, reason=triplet found, delay=400, client_name=smtp.example.net, client_address=10.10.10.10, sender=absender@example.net, recipient=empfaenger@example.com
Die Serverkonfiguration ist abgeschlossen
Ja, der Mailserver wäre fertig - aber ein Mailserver ist niemals fertig, spätestens mit dem nächsten Ubuntu Update muss du dich wieder per SSH auf deinen Server verbinden und eventuell Fehler beheben.
Ein Mailserver bietet die Grundlage für viele weitere Dienste, ohne Mailserver ist eine Server kein vollständiger Server. Nun kannst du Logs, Warnungen deines Servers empfangen und unter deiner dynDNS E-Mails versenden.
Falls du nun noch mehr willst, kannst du dir Cyrus anschauen, ein wesentlich komplizierter IMAP und POP3 Server.
E-Mail-Clients
Um deinen Server voll ausnutzen zu können benötigst du noch einen E-Mail-Client (auch MUA bzw. Mail User Agent genannt). Um deine Emails direkt am Server in der Konsole zu lesen eignet sich Mutt.
user@server:~$ sudo apt-get install mutt
user@server:~$ mutt
Als E-Mail-Clients für deinen Desktoprechner sind Evolution und Thunderbird zu empfehlen. Die beiden sind auch mit etwas mehr Funktionen und Komfort ausgestattet. Vergiss nicht, dass dein Postfix keine Authentifizierung benötigt, wenn du ihn richtig konfiguriert hast, Dovecot nutzt die Systempasswörter und -benutzernamen zum Login.
Natürlich kannst du zusätzlich Squirrelmail als Weboberfläche installieren, dazu gibt es eine empfehlenswerte Anleitung auf ubuntuusers.de.
Sieve-Filter mit Thunderbird verwalten
Eine bequeme Möglichkeit die Filter von Sieve aus der Ferne zu bearbeiten bietet das von Mozilla entwickelte Thunderbird-Addon Sieve. Um dem Addon den Zugriff auf die Imap-Ordner zu erlauben muss lediglich eine kleine Änderung an der Konfigurationsdatei von Dovecot vorgenommen werden. Dazu muss sie mit Root-Rechten editiert werden:
user@server:~$ sudo nano /etc/dovecot/dovecot.conf
Bereits am Anfang sollte die Zeile mit den erlaubten Protokollen zu finden sein. Falls noch nicht vorhanden wird dort managesieve hinzugefügt. Das sollte dann etwa so aussehen:
# Protocols we want to be serving: imap imaps pop3 pop3s managesieve # If you only want to use dovecot-auth, you can set this to "none". #protocols = imap imaps protocols = imap imaps pop3 pop3s managesieve
Um die Änderung zu übernehmen wird Dovecot neu gestartet:
user@server:~$ sudo /etc/init.d/dovecot restart
Sobald das Addon in Thunderbird installiert und dieser neu gestartet wurde, erscheint dort ein weiterer Punkt in der Kontenverwaltung namens Sieve-Einstellungen. Dort muss zuerst der Punkt Ja, dieser Server unterstützt Sieve aktiviert werden, dann können auch schon die Einstellungen für das E-Mail-Konto vorgenommen werden. Das Addon verwendet in der Standardkonfiguration die selben Zugangsdaten wie das E-Mail-Konto; das sollte im Allgemeinen korrekt sein, und muss nicht verändert werden. Sobald auf Filter bearbeiten geklickt wird, versucht das Addon bereits mit dem Server Kontakt aufzunehmen. Um Fehler bei der Authentifikation leichter zu finden öffnen wir zuerst eine Konsole und überwachen das Log:
user@server:~$ tail -f /var/log/mail.log
Sollte Thunderbird beim Verbindungsversuch ein unbekanntes Zertifikat entdecken, muss dieses erlaubt werden. Danach sollte ein ähnlicher Eintrag im Log zu sehen sein:
dovecot: managesieve-login: Login: user=<benutzername>, method=PLAIN, rip=192.168.0.1, lip=192.168.0.2, TLS
Die Kommunikation zwischen unserem E-Mail-Client und dem Server funktioniert nun, und es können die ersten Filter erstellt (und aktiviert) werden. Es gelten dabei die selben Vorgaben wie hier beschrieben. — chrisge 2012/08/20 02:06
@*_lovers_maps einzutragen ist gleichbedeutend mit der Einstellung $final_*_destiny = D_PASS;.@viruses_that_fake_sender_maps eingetragne wurde, oder wenn die Nachricht von einer Mailingliste (Precedence: bulk|list|junk) stammt, oder wenn der Spamwert den in $sa_dsn_cutoff_level definierten Wert übersteigt.
Wenn eine Quarantäne definiert wurde, wird dort eine Kopie der Nachricht gespeichert. Falls keine Quarantäne definiert wurde ist die Nachricht verloren, dem Absender wurde jedoch eine Benachrichtigung über die nicht erfolgte Zustellung gesendet.
Diskussion
[20.08.2012] Änderungen:
Erstmal danke für das ausführliche how to Hab eine frage: ich benutze no-ip als Dynamic ip Ist im Router eingetragen geht alles ohne Probleme Hab eine Domain bei 1und1 via cname auf die no-ip Adresse geleitet Apache, FTP geht alles… Könnte ich jetzt mit dieser Anleitung Emails von meiner 1und1 Domain über meinen server verschicken z.B User1@meinedomain.com ?
Ja, das wäre prinzipiell möglich
Wenn du aber eh eine Domain bei 1und1 hast, könntest du da mal schauen, ob du da einen Relay-Zugang bekommst. Das wäre dann eine wesentlich schönere Lösung (im Vergleich zu Absender fälschen über Arcor).
Erstmal Danke für die schnelle Antwort . Kla wäre es mir lieber die Mails über den richtigen 1und1 Server laufen zu lassen (oder wie meinßt du das?) Aber sobald man da die DNS Einstellung ändert funktsioniern die Email konnten nicht mehr. Wenn ich also den Mail Server über meine Domain laufen lasse muss ich dann hier bei der Anleitung noch irgendetwas beachten?
Also ich nehme den relay-Zugang von arcor
Ich würde den SMTP-Relay (also den Postausgangsserver) von 1und1 statt den von Arcor nehmen. Das geht natürlich nur, wenn das in deinem Tarif auch inbegriffen ist. Dann könntest du die Mails über den Postausgangsserver von 1und1 verschicken und mit deinem Server für deine Domain empfangen.
Wenn du statt dessen lieber komplett den Mailservice von 1und1 verwenden möchtest (1und1 empfängt dann auch deine Mails), müsstest du die MX Records so wie ursprünglich lassen oder falls das nicht geht an die vorgeschlagenen Settings von 1und1 anpassen. Die E-Mail Konten bei 1und1 müssten dann eigentlich auch wieder funktionieren (bei Domainfactory ist es zumindest so).
Würdest du trotzdem diese Anleitung nehmen, gäbe es zusätzlich eigentlich nichts zu beachten