Schlagwort-Archive: arch

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.