Bei einem Serverwechsel taucht immer wieder das Problem auf, dass man auch vorhandene Mailman-Listen umziehen möchte. Der Vorgang ist eigentlich ganz einfach. Die Beschreibung geht davon aus, dass Mailman auf dem Zielrechner bereits eingerichtet und funktionsfähig ist.

Im ersten Schritt müssen die Listen-Verzeichnisse aus den Ordnern

/var/lib/mailman/archives/private/
/var/lib/mailman/lists/

kopieren. Für jede Liste gibt es in den Ordnern ein gleichnamiges Verzeichnis und in dem Archivordner noch jeweils eines mit der Extension .mbox. Diese Verzeichnisse werden einfach auf den neuen Server kopiert und dem richtigen Eigentümer übereignet. Unter Ubuntu gehören die Dateien in der Regel lists.list und die übergeordneten Verzeichnisse root.list.

Die Eigentümer müssen jeweils noch richtig gesetzt werden.

Dann geht es noch an zwei Dateien im Verzeichnis data:

aliases
virtal-mailman

Hier finden sich für jede Liste mehrere Zeilen mit den Weiterleitungen. Die benötigten Zeilen holt man sich vom alten Server und hängt sie an die Dateien auf dem neuen Server an. Am Ende müssen die entstandenen Dateien noch in das benutzte Datenbank-Format umgewandelt werden:

/usr/lib/mailman/bin/genaliases

oder man wartet bis mailman das selber macht.

Danach kann man dann vorsichtshalber mailman neu starten.

Falls es Probleme mit der URL für die Liste gibt, so ist wichtig zu wissen, dass die Listenkonfiguration in der Datei:

/var/lib/mailman/lists/<listenname>/config.pck

steckt. Diese Datei kann man z.B. mittels

withlist -l -r fix_url <listname> -u mailman.yyy.com

bearbeiten.

 

Weitere Hinweise unter:

Kürzlich hatten wir das Problem, dass in der Mail-Warteschlange sehr sehr viele Mail auftauchten. Da waren zum größten Teil fehlgelaufene Systemmeldungen von Arpwatch.

Da habe ich micht etwas mit dem Mailserver Exim beschäftigt.

Für die grundlegenden Befehle gibt es unter http://www.florian-fritsch.com/exim4-kleines-mailqueue-howto/ eine nettes HowTo.

Spannend finde ich auch die Informationen unter http://bradthemad.org/tech/notes/exim_cheatsheet.php, speziell der Befehl

exiqgrep

bietet ungeahnte Möglichkeiten.

Thunderbird

Nun muss man nur noch das jeweilige Mailprogramm so konfigurieren, dass es die Verbindungen auch verschlüsselt anfordert. Auch hier gibt es wieder zwei Richtungen. Im Reiter Server-Einstellungen gibt man die Konfiguration an, die zum Abrufen der Mails notwendig ist.

thunderbird4

Im Reiter Postausgangs-Server kommen dann die Einstellungen zum Versenden der Mails. In diesem Fall sind die Einstellungen identisch. Eigentlich hätte ich aber auch noch ein Zertifikat für smtp.debacher.de erzeugen können.

thunderbird3

In der Logdatei /var/log/mail kann man erkennen, wenn die Mails verschlüsselt abgerufen werden:

2016-10-22T16:21:45.874680+02:00 h2366010 dovecot: imap-login: Login: user=<xxx@debacher.de>, method=PLAIN, rip=85.176.x.y, lip=81.169.xx.yy, mpid=30944, TLS, session=<vv7q4HQ/xABVsIAH>

Hier taucht dann TLS in der Zeile auf. Entsprechend für das Abliefern der Mails:

2016-10-22T18:17:17.327190+02:00 h2366010 postfix/smtpd[32315]: Anonymous TLS connection established from x5b087001.dyn.telefonica.de[85.176.x.y]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

Da der Zugriff auf das Mailsystem auch immer häufiger mobil erfolgt scheint mir eine Verschlüsselung der Verbindung unvermeidlich. Dazu muss man in die Konfiguration von Postfix und Dovecot eingreifen. Ausgangspunkt für meine Konfiguration ist die Server-Beschreibung unter http://www.debacher.de/wiki/Root-Server_mit_OpenSuSE_13.2 .

letsencrypt

Da mir das System von letsencrypt sehr zusagt möchte ich die zugehörigen Zertifikate auch für das Mailsystem nutzen. Dazu habe ich mir einen virtuellen Apache-Server eingerichtet, der auf http://imap.meine-domain.de hört und ansonsten keinen Inhalt zur Verfügung stellt. Der virtuelle Server ist nur für die Erstellung und Verlängerung der Zertifikate wichtig.

Hierfür habe ich mir eine letsencrypt.ini angelegt:

# Wir nutzen 4096 bit RSA key statt 2048
rsa-key-size = 4096

# allgemeine Angaben
email = <name>@<domain>
authenticator = webroot

# Domains fuer die wir Zertifikate beantragen, die erste in
# der liste legt den Hauptnamen fest. Alle Domains müssen beim
# Aufruf erreichbar sein
domains = imap.debacher.de, smtp.debacher.de

# Dies ist das Verzeichnis zur Domain, wo letsencrypt seinen Hash in
# /.well-known/acme-challenge schreiben will. Der Pfad muss auf / enden
webroot-path = /srv/www/vhosts/imap.debacher.de/httpdocs/

Dann mittels

/root/letsencrypt/letsencrypt-auto certonly --config /srv/www/vhosts/imap.debacher.de/letsencrypt.ini

das Zertifikat erzeugt.

Dovecot

Für Dovecot müssen dann folgende Informationen in der Konfigurationsdatei stehen:

protocols = imap pop3 lmtp sieve
ssl = yes 
ssl_cert = </etc/letsencrypt/live/imap.debacher.de/fullchain.pem 
ssl_key = </etc/letsencrypt/live/imap.debacher.de/privkey.pem

Nach einem Neustart greift Dovecot dann auf das Zertifikat zu.

Abfragen kann man das Zertifikat dann mittels:

openssl s_client -connect imap.debacher.de:pop3s

oder

openssl s_client -connect imap.debacher.de:imaps

oder

openssl s_client -connect imap.debacher.de:smtp -starttls smtp

Postfix

Für Postfix muss etwas mehr gemacht werden. Wir haben ja zwei Richtungen zu beachten, Postix kann als Client und als Server dienen. Wenn er Mails an andere Rechner abliefert, dann ist er Client (smtp_…), ansonsten Server (smtpd_…).

Ich habe an die Konfigurationsdatei /etc/postfix/main.cf folgende Zeilen angehängt:

# tls config
smtp_tls_note_starttls_offer = yes

# eingehende Verbindungen
smtpd_use_tls = yes
smtpd_enforce_tls = no
# Obiges kann zusammengefasst werden zu smtpd_tls_security_level=may
smtpd_tls_key_file = /etc/letsencrypt/live/imap.debacher.de/privkey.pem
smtpd_tls_cert_file = /etc/letsencrypt/live/imap.debacher.de/fullchain.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3
#tls_random_source = dev:/dev/urandom
#tls_random_prng_update_period = 3600s

# ausgehende Verbindungen
smtp_use_tls = yes
smtp_enforce_tls = no
# Obiges kann zusammengefasst werden zu smtp_tls_security_level=may
smtp_tls_key_file = /etc/letsencrypt/live/imap.debacher.de/privkey.pem
smtp_tls_cert_file = /etc/letsencrypt/live/imap.debacher.de/fullchain.pem
smtp_tls_loglevel = 1
smtp_tls_mandatory_protocols=!SSLv2, !SSLv3

Nun muss noch in der Datei /etc/postfix/master.cf eine Zeile auskommentiert werden:

tlsmgr unix - - n 1000? 1 tlsmgr

Thunderbird

Etwas mehr Aufwand bedeutet es den Nutzern der eMail-Domain die Konfiguration ihrer Mail-Clients zu beschreiben. Zumindest für Thunderbird gibt es eine genial einfache Lösung dafür, Danke an Lukas Thiel für den Hinweis.

Thunderbird unterstützt eine Autokonfiguration. Für die großen Anbieter greift es dazu auf eine eigene Datenbank zu, als kleiner Anbieter kann man die notwendigen Informationen nach folgender Anleitung erstellen: https://developer.mozilla.org/de/docs/Mozilla/Thunderbird/Autokonfiguration.

Der Anleitung folgend habe ich mir im Webserververzeichnis httpdocs meiner Domain eine Datei .well-known/autoconfig/mail/config-v1.1.xml angelegt mit folgendem Inhalt:
autoconfig1

Thunderbird sucht beim Anlegen einer neuen Mailadresse nach dieser Datei in der zugehörigen Domain. Wenn die Datei gefunden wird, dann konfiguriert sich das Mailprogramm ganz automatisch nach diesen Einstellungen.

Für den Fall, dass die automatische Konfiguration nicht möglich ist findet sich eine Konfigurationsbeschreibung unter http://www.debacher.de/ublog/2016/10/thunderbird-konfigurieren/.

In der Logdatei /var/log/mail kann man erkennen, wenn die Mails verschlüsselt abgerufen werden:

2016-10-22T16:21:45.874680+02:00 h2366010 dovecot: imap-login: Login: user=<xxx@debacher.de>, method=PLAIN, rip=85.176.x.y, lip=81.169.xx.yy, mpid=30944, TLS, session=<vv7q4HQ/xABVsIAH>

Hier taucht dann TLS in der Zeile auf. Entsprechend für das Abliefern der Mails:

2016-10-22T18:17:17.327190+02:00 h2366010 postfix/smtpd[32315]: Anonymous TLS connection established from x5b087001.dyn.telefonica.de[85.176.x.y]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

Links

Gelegentlich gibt es auch dem IServ-Schulserver mal Probleme mit dem Mailsystem. Da ist es erst einmal wichtig zu wissen, wo die Dateien liegen. IServ benutzt Cyrus Imap als Mailserver. Diese Software wäre sicherlich nicht meine erste Wahl.

Die Mails für einen Benutzer namens richard.linde liegen unterhalb von /var/spool/cyrus/mail/user/richard^linde/ . In dem Ordner gibt es dann für jede Nachricht eine Datei, deren Name aus einer Nummer und einem abschließenden Punkt besteht. Dann gibt es in dem Ordner und seinen Unterordner noch die Dateien:

  • cyrus.cache
  • cyrus.header
  • cyrus.index
  • cyrus.squat

Wenn man diese Dateien löscht, dann funktioniert das Mailsystem nicht mehr richtig. Man kann sie im Bedarfsfall aber neu erzeugen lassen mittels:

 su -c "/usr/lib/cyrus/bin/reconstruct -f -r user/richard^linde" cyrus

Dabei entstehen aber nur die ersten drei Dateien.

Die Bedeutung der Dateien ist in https://cyrusimap.org/docs/cyrus-imapd/2.4.9/internal/mailbox-format.php beschrieben.

 

Für die Weiterleitungen und die Spam-Sortierung wird Sieve benutzt.  Die Dateien für den Benutzer findet man in /var/spool/sieve/r/richard^linde/ . Die Datei system.script hat standardmäßig folgenden Inhalt:

require "include";
require "fileinto";
require "vacation";
# include user script
include "user";
# file spam into the Junk folder
if header :matches "X-Spam-Flag" "YES" {
 fileinto "INBOX/Junk"; stop; }

Bei einer aktivierten Weiterleitung kommen folgende Zeilen hinzu:

# redirection
redirect "richard.line@private-email.de";
keep;

Änderungen an dieser Datei haben aber nur dann einen Effekt, wenn sie anschließend in die binäre Darstellung system.bc übertragen werden.

Für Änderungen habe ich unter https://lists.andrew.cmu.edu/pipermail/info-cyrus/2006-March/021151.html gefunden:

- ermittle das Verzeichnis für die Sieve-Scripte: /var/spool/sieve/<1.Buchstabe>/<Benutzername>
- mkdir -p wenn das Verzeichnis nicht existiert
- Kopiere das Benutzerscript in dieses Verzeichnis (eg: user.script)
- sievec user.script user.bc
- ln -s user.bc defaultbc
- (wenn root) setze die Eigentumsverhältnisse auf cyrus.mail

 

Veröffentlicht unter IServ.

Nach längerer Vorbereitungszeit habe ich jetzt mein Evolution von POP3 auf IMAP-Nutzung umgestellt. Die Umstellung war eigentlich ganz einfach, ich habe einfach unter Einstellungen für mein Standard-Postfach unter Abrufen von E-Mails statt POP in der Drop-Down-Liste IMAP ausgewählt. Seitdem gibt es nun zwei Gruppen von Ordnern, einerseits die POP-Ordner unter Auf diesem Rechner und die neuen IMAP-Ordner unter Uwe@meine-maildomain.de. Nun kann ich meine Mails aus den alten Ordnern einfach in die neuen Ordner kopieren, wodurch mir auch meine alten Mails jetzt unter IMAP zur Verfügung stehen. Das dauert zwar etwas, ich habe auch etwa 4GB alte Mails, aber einfacher kann es kaum sein.

Womit ich etwas Probleme hatte sind die Mail-Filter. Ich habe die alle so verändert, dass sie die neu erstellten Ordner als Ziel nutzen, das hat aber nicht automatisch funktioniert. Ich musste erst unter den Einstellungen des IMAP Kontos auf Empfangsoptionen klicken und dort ein Häkchen setzen bei: „Filter auf neue Nachrichten in INBOX dieses Servers anwenden“.

Seit vielen Jahren benutze ich Horde/Imp und Squirrelmail als Webmailer. In der letzten Zeit nutze ich aber lieber die Programmpakete:

Bei Roundcube handelt es sich um ein freies Programm, welches sich im wesentlichen auf die Mail-Funktionalität beschränkt, aber eigentlich alles bietet, was man so braucht. Eine Anleitung finde man auf den Anbieter-Seiten in verschiedenen Sprachen, u.a. auf Deutsch. Ein sehr umfangreiches Benutzerhandbuch ist auch auf den Seiten der Fachhochschule Darmstadt zu finden.

Group-Office ist ein sehr viel umfangreicheres Tool, mit Kalender und weiteren Groupware-Funktionen. Daher ist der Administrationsaufwand auch etwas höher. Die Installation ist aber sehr einfach und und nicht besonders anspruchsvoll. Es gibt eine kostenfreie Community-Version und eine kostenpflichtige Professional-Version. Die englischsprachige Dokumentation ist im Group-Office Wiki zu finden. Eine deutsche Anleitung, für eine ältere Version, findet sich im Web.

Nachdem ich eine Mail mit dem lustigen Footer:

Ich verwende die kostenlose Version von SPAMfighter, die bisher
2703 Spammails entfernt und mir so eine Menge Zeit gespart hat.
Rund 6 Millionen Leute nutzen SPAMfighter schon

bekam habe ich mal meinen kleinen Mailserver abgefragt. Für einen Zeitraum von 42 Stunden ergeben sich aktuell folgende Werte:

  • abgelehnte Mails: 5652
  • angenommene Mails: 85

das ist eine Ablehnungsquote von 98,5%.

Ablehnungsgründe waren:

  • RBL: 3362
  • Benutzer unbekannt: 1075
  • Kein Hostname beim Absender: 1047
  • Keine domain für Absender: 131

Die Sperrlisten sind also recht effektiv. Ich benutze dabei vor allem zwei Listen:

  • bl.spamcop.net: 2151
  • dul.dnsbl.sorbs.net: 1211

Bei Rechnern, die nicht ständig am Netz hängen, ist meistens ein anderer Server dafür zuständig die Post in Empfang zu nehmen. Nach der Einwahl muss man von diesem die Post abrufen. Dazu dient das einfache Programm fetchmail.

Also einfach das Paket fetchmail nachinstallieren.

Konfiguriert wird fetchmail über die Datei /etc/fetchmailrc, die bei mir etwa folgenden Inhalt hat:

set postmaster "debacher"
set daemon 900

poll imap.debacher.de protocol POP3 no dns
user debacher password geheim is debacher here ssl

Im ersten Teil wird eingestellt, dass fetchmail im Dämon-Mode alle 900 Sek (15 Minuten) die Postfächer abrufen soll. Bei Fehlern wird der Benutzer debacher informiert.

Danach folgt die Abfrage eines POP3 Postfaches, der Rechnername steht in der ersten Zeile und die Anmeldedaten in der zweiten Zeile. An Ende der zweiten Zeile wird festgelegt, welcher lokale Benutzer die eingehenden Mails erhalten soll.

Man kann beliebig viele Postfächer auf einen Rutsch abfragen.

Weitere Informationen unter http://www.linuxbu.ch/pdf6/kapitel14.pdf und http://wiki.ubuntuusers.de/Fetchmail

Veröffentlicht unter linux.

Mit der benutzung von Dovecot habe ich schon lange gute erfahrungen gemacht. Das Programm dient dazu, dass Benutzer ihre Mails mit POP3 und IMAP abrufen können.

Dazu installiert man die Pakete:

  • dovecot-common
  • dovecot-pop3d
  • dovecot-imapd (nur falls benötigt)

Die weitere Konfiguration ist recht einfach. Ich habe nur die Zeile

#disable_plaintext_auth = yes

auf

disable_plaintext_auth = no

geändert, da ich im lokalen Netz so mit Klartext-Passworten arbeiten kann.

Weitere Informationen unter http://wiki.ubuntuusers.de/Dovecot

Veröffentlicht unter linux.