Schlagwort-Archive: postfix

Lokaler Mailserver unter Arch

Hier hatte ich vor einiger Zeit meine main.cf und dovecot.conf für Arch dokumentiert, war dann jedoch auf dem ollen Wind U100 zu Kali gewechselt. Auf einem meiner anderen Oldtimer – einem Dell Vostro 1510 – läuft jetzt wieder ein Arch. Es weiß mit alter Hardware sehr ressourcenschonend umzugehen – im Gegensatz zu bloated Ubuntu – und das Mehr an Gefummel ist auf einem Laptop, den ich nicht im Dauereinsatz habe, auch nicht weiter tragisch.

Zu Dokumentationszwecken erneut die main.cf und dovecot.conf für einen lokalen Mailserver als Speicherplatz für die E-Mails der letzten Jahre:

/etc/postfix/main.cf

# local paths
queue_directory = /var/spool/postfix
command_directory = /usr/bin
daemon_directory = /usr/lib/postfix/bin
mail_owner = postfix

# local domain settings
myhostname = dellaro 
# mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.localdomain, localhost

# Timeout settings and limits
# not nec. needed on localhost
# but will not do any harm either
delay_warning_time = 1h
unknown_local_recipient_reject_code = 450
minimal_backoff_time = 300s
maximal_backoff_time = 1200s
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_helo_timeout = 60s
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12

# SMTP settings
# SSL not needed on localhost
# but will not harm either
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
# add some modern SSL stuff 
smtpd_tls_received_header = yes
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_auth_only = yes

smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_loglevel = 1
smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions = permit_sasl_authenticated,
                               permit_mynetworks,
                               reject_unauth_destination,
                               
# Sender SASL not needed on localhost
# but will not harm either
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_sasl_security_options = noanonymous

# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client

# Network settings
inet_interfaces = loopback-only
inet_protocols = all
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
relayhost =

smtpd_relay_restrictions = permit_mynetworks 
                           permit_sasl_authenticated
                           defer_unauth_destination

# Email and mailbox settings
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
mailbox_size_limit = 0

# misc other stuff
mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"

smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/man
sample_directory = /etc/postfix/sample
readme_directory = no
recipient_delimiter = +

/etc/dovecot/dovecot.conf

auth_mechanisms = plain login
mail_access_groups = mail
mail_location = maildir:~/Maildir
passdb {
  driver = pam
}
protocols = imap
service auth {
  unix_listener auth-client {
    group = postfix
    mode = 0660
    user = postfix
  }
  user = root
}
ssl_cert = </etc/ssl/certs/mail.crt
ssl_key = </etc/ssl/private/mail.key
userdb {
  driver = passwd
}
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}

Scheint rund zu laufen. Zumindest werfen mir weder Postfix noch Dovecot noch Fehlermeldungen entgegen. Zur Einrichtung selbst siehe die entsprechenden Seiten im Arch-Wiki:

https://wiki.archlinux.org/index.php/postfix

https://wiki.archlinux.org/index.php/Dovecot

Wie immer bei meinen auf jedem Laptop vorhandenen lokalen Mailservern: Der Mailserver ist von außen Dank iptables nicht zu erreichen. Nur der lokale Thunderbird nimmt Kontakt auf. Sicherheitslücken in der Konfiguration sind deswegen nicht tragisch.

Auf gleichem Stand halte ich die lokalen Mailserver auf den Laptops im Moment noch mit rsync gegenüber meiner heimischen Workstation. Da muss ich mir mal was Neues überlegen …

Arch Dovevot Postfix

Auf allen meinen Laptops schleppe ich eine Kopie des lokalen Mailservers meiner Workstation mit mir herum – inzwischen eine Mail-Sammlung die rund 7 Jahre zurück reicht und mehrere GB umfasst. Hier einige Notizen zur Installation von Dovecot und Postfix unter Arch für die ausschließlich lokale Nutzung. Sicherheit ist nur dadurch gegeben, dass dieser Mailserver von Außen nicht zu erreichen ist – auch weil noch eine Firewall die Zugriffe blockiert.

Die aktiven Zeilen in der /etc/postfix/main.cf

compatibility_level = 2
queue_directory = /var/spool/postfix
command_directory = /usr/bin
daemon_directory = /usr/lib/postfix/bin
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = localhost.localdomain
mydomain = localdomain
myorigin = $mydomain
inet_interfaces = localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debugger_command =
	 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
	 ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/bin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
inet_protocols = ipv4
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Die aktiven Zeilen in der /etc/dovecot/dovecot.conf

ssl = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:~/Maildir
mail_privileged_group = mail
auth default {
      mechanisms = plain login
      passdb pam {
      }
      userdb passwd {
      }
      socket listen {
        client {
          # Assuming the default Postfix $queue_directory setting
          path = /var/spool/postfix/private/auth
          mode = 0660
          # Assuming the default Postfix user and group
          user = postfix
          group = postfix
        }
        # deliver and some other programs need also auth-master:
        #master {
        #  path = /var/run/dovecot/auth-master
        #  mode = 0600
        #}
      }
    }
protocol imap {
  mail_plugins = $mail_plugins autocreate
}

Damit die Anmeldung als lokaler Benutzer funktioniert, noch die /etc/pam.d/dovecot:

auth     required     pam_unix.so nullok
account  required     pam_unix.so

Man könnte nun die Dienste jeweils aktivieren

systemctl enable dovecot.service
systemctl enable postfix.service

und somit permanent auf den lokalen Mailserver zugreifen – muss man aber nicht. Da diese Konfiguration bei mir auf einem MSI Wind U 100 läuft, spare ich mir die Ressourcen lieber und starte den Mailserver per Bash-Script, wenn ich auf mein lokales Mail-Archiv wirklich zugreifen muss. So lange man den Server localhost.localdomain im Thunderbird nicht anklickt, funktioniert dieser ja auch so für alle anderen IMAP Konten – und wenn man aus Versehen doch klickt, dieser aber nicht gestartet wurde, dann motzt Thunderbird halt, dass der Server nicht zu erreichen sei.

Mailserver von 12.04 auf 14.04

Auf einem Ubuntu 12.04 lauscht Postgrey nur auf IPv6

tcp6 0 0 ::1:10023 :::* LISTEN 0 10265 1191/postgrey.pid –

Auf einem Ubuntu 14.04 lauscht er dann nach dem Upgrade auf IPv4

tcp 0 0 127.0.0.1:10023 0.0.0.0:* LISTEN 0 13562 1331/postgrey.pid –

Dass er sich wie das Fähnchen im Wind gedreht hat, wird nicht mitgeteilt. Eine Anpassung von Postfix mit Neustart von Postfix und Postgrey hilft weiter:

check_policy_service inet:127.0.0.1:10023,
# check_policy_service inet:::1:10023,

Überhaupt: Dovecot und Postfix haben bei mir das Upgrade denkbar schlecht verdaut. Im Grunde musste ich die gesamte Konfiguration der beiden händisch neu vornehmen, weil so ziemlich alles broken war: Einstellungen, Pfade, Zertifikate … you name it.

Zurück: Webserver von 12.04 auf 14.04

postgrey hört sich um

Auf einem vor gut einem halben Jahr installierten Ubuntu 12.04 Server sieht der postgrey Eintrag in der /etc/postfix/main.cf wie folgt aus:

check_policy_service inet:127.0.0.1:10023

Wer heute einen postgrey seinem Ubuntu 12.04 hinzufügen will, landet mit diesem Eintrag nur bei Fehlermeldungen, weil postgrey sich bei Neuinstallationen wohl an IPV6 gebunden fühlt. Das weiß ich seit gestern. Die folgenden ergänzenden Einträge in der main.cf helfen dann weiter:

inet_protocols = all

check_policy_service inet:::1:10023

Ältere Installation erleben das Problem nicht, auch wenn ein postgrey Upgrade erfolgte.

Fedora Postfix Dovecot

Um meine Mail-Unmengen zu verwalten nutze ich einen lokalen IMAP Mailserver unter Dovecot. Die aus dem Internet eintreffende Mail wird lokal gefiltert, in Ordner sortiert und hierbei in den lokalen IMAP Server geschoben. Meine Laptops synchronisieren ihren Mailbestand jeweils gegenüber dem zentralen Server zu Hause, so dass ich immer alle Mails dabei haben kann – diese liegen in meinem jeweiligen Homeverzeichnis in einem Maildir-Ordner. Meine Thunderbird-Installation auf den jeweiligen Geräten binden dann den lokalen Dovecot ein.

Unter Ubuntu ist ein derartiger Mailserver schnell eingerichtet:

sudo apt-get install dovecot-postfix

und dann läuft das Ding. Weitere Arbeiten sind nicht nötig – alle Komponenten lauschen nur an localhost, wenn man beim Setup die hierzu gestellte Rückfrage einmal abnickt.

Unter Fedora ist das alles nicht ganz so einfach, weswegen ich hier meine seit Fedora 16 genutzte Konfiguration dokumentiere.

Postfix

Erst einmal werden wir root:

su –

und installieren dann einen Postfix

yum -y install postfix

Dessen zentrale Konfigurationsdatei wird bearbeitet

vi /etc/postfix/main.cf

Die folgenden Eintragungen vornehmen (IPv4 reicht lokal völlig aus):

myhostname = localhost.localdomain
mydomain = localdomain
myorigin = $mydomain
inet_interfaces = localhost
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks_style = host
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP

Die Authentifizierung einrichten gegenüber dem lokalen Benutzeraccount:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_client_restrictions = permit_mynetworks,reject_unknown_client,permit
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

Der bei Fedora schon vorhandene Mailserver wird angehalten und abgeklemmt:

systemctl stop sendmail.service
systemctl disable sendmail.service

Postfix wird als neuer Standardmailserver eingerichtet. Im folgenden Schritt also Postfix auswählen:

alternatives –config mta

Dann Postfix starten und dafür sorgen, dass dieser immer beim Booten mit hochkommt:

systemctl start postfix.service
systemctl enable postfix.service

Postfix sollte nun laufen (mit telnet oder nmap kann man dies überprüfen). Als nächstes kommt der IMAP Server dran.

Dovecot

Dovecot installieren durch

yum -y install dovecot

Dann die Konfigurationsdateien bearbeiten. Meist sind entsprechende Zeilen schon vorhanden, so dass man diese schlicht ein/auskommentieren kann:

vi /etc/dovecot/dovecot.conf

Hier die Eintragungen für die Protokolle großzügig festlegen – genutzt wird später lokal nur IMAP, aber das ist Wurscht.

protocols = imap pop3 lmtp
listen = *, ::

Die nächste Konfigurationsdatei:

vi /etc/dovecot/conf.d/10-auth.conf

Auch hier können wir auf Grund der Tatsache, dass unser Dovecot nur auf dem jeweiligen Rechner lokal läuft, großzügig sein.

disable_plaintext_auth = no
auth_mechanisms = plain login

Und dann wäre da noch die folgende Datei …

vi /etc/dovecot/conf.d/10-mail.conf

… in der wir in unserem Home ein Mailverzeichnis einrichten:

mail_location = maildir:~/Maildir

Und noch die Konfigurationsdatei für die Authentifizierung des lokalen Benutzers:

vi /etc/dovecot/conf.d/10-master.conf

die wie folgt ergänzt wird:

unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

Jetzt fehlt noch Einstellungen für die Verschlüsselung der Verbindung zum IMAP Server vornehmen

vi /etc/dovecot/conf.d/10-ssl.conf

auf die wir lokal schlicht verzichten:

ssl = no

Und am Ende wird der Dovecot noch als Dienst eingerichtet:

systemctl start dovecot.service
systemctl enable dovecot.service

SELinux

Wenn es mit der Verbindungsaufnahme zum lokalen Mailserver aus Thunderbird heraus nun nicht klappen will, dann muss man die Einstellungen für SELinux überprüfen und testweise auch so einschränken, dass diese zwar Warnmeldungen ausspuckt, jedoch nicht mehr dazwischen funkt:

vi /etc/selinux/config

Hier dann auf permissive umschalten und nochmal den Zugriff von Thunderbird aus probieren.

selinux_dovecot

SELinux motzt dann zwar, aber der Zugriff auf den lokalen Mailspeicher sollte funktionieren.

Mailmassenverwaltung

Hier hatte ich schon davon geschrieben, dass mein Evolution gerade am zicken ist, weil die Mailmassen, die ich erhalte, dieses schlicht erdrücken. Jetzt hab ich für mich eine lokale Lösung gefunden, die – denke ich – für die Zukunft taugt: Ich nutze eine Dovecot als lokalen IMAP Server und schiebe meine Altmails schlicht von Hand in diesen.

Die Anleitung im Ubuntuusers-Wiki war zumindest mal ein Anfang – aber so richtig rund lief die Kombination aus Dovecot und Postfix erst, nachdem ich diese Seite in der Ubuntu Hilfe verdaut hatte. Bei einem schon installierten Postfix dürfte in Zukunft wohl ein

sudo apt-get install dovecot-postfix

reichen, um diese Art der Mailspeicherung zu aktivieren.

In meinem Home erschien dann ein neues Verzeichnis Maildir, das ich mit BackinTime extern bzw. rsnapshot intern mitsichern kann.

In diesem Verzeichnis sind dann die im Mailclient angelegten Ordner als versteckte Unterverzeichnisse zu sehen – im Fall oben ein Verzeichnis LFB und ein Verzeichnis Schule. Hier liegen demnach die Mails samt Anhängen und entlasten auf diese Weise das .evolution Verzeichnis.

Eingebunden wird das IMAP Server Verzeichnis nur wenn benötigt, damit Evolution auch beim Erstellen von Indices nicht mehr Bauchlandungen hinlegt. Ein zusätzlich installierter Thunderbird darf dauernd hierauf zugreifen.