menu.jpg  ::  Home ::  Computing ::  Downloads ::  Scooter ::  Links ::  Music ::  Nonsense ::  Mail :: 

Mailtransfer mit OpenSMTPD

Ich bevorzuge ein traditionelles Mail-Setup mit Mail client, Mail delivery agent, POP3- bzw. SMTP-Servern und POP3-Retriver. Der Vorteil hieran ist, dass ich jede Einzelkomponente austauschen kann, ohne das komplette Setup umbauen zu müssen.Über die letzten 25 Jahre waren hier folgende Komponenten im Einsatz:

ZweckApplication
SMTP-ServerSendmail, Exim, OpenSMTPD
POP3-ServerTeaPOP, POPa3d
POP3-RetrieverFetchmail, mpop, fdm
Mail Delivery AgentProcmail, fdm
Mail User AgentPine, Mutt

Ich habe vor Kurzem nach über 20 Jahren Exim durch OpenSMTPD ersetzt, weil dessen Konfiguration wesentlich kompakter ist und er alles, was ein SMTP-Server für mich leisten muss, mitbringt.

OpenSMTPD ist im Umfeld von OpenBSD entstanden und hat dort vor Jahren Sendmail abgelöst. Inzwischen gibt es auch - ähnlich wie bei der OpenSSH - ein public release, das statt gegen LibreSSL gegen das unter Linux übliche OpenSSL verlinkt wird. Die Installation schleppt insofern unter normalen Umständen keine Abhängigkeiten ins System ein.

Im Mai 2018 ist beginnend mit Version 6.4.0 die Syntax der Konfiguration inkompatibel zu vorherigen Versionen gerändert worden. Im Web sind jedoch noch zahlreiche Tutorials mit der veralteten Syntax anzufinden, mit der neuere Programmversionen nicht mehr funktionieren - also Vorsicht beim Abkupfern...

Das public release kommt mit einer sinnvollen Konfiguration in der Datei /etc/smtp/smtpd.conf an Bord, die hier folgendermassen aussah:

OpenSMTPD-Setup für lokalen Versand

    #      $OpenBSD: smtpd.conf,v 1.10 2018/05/24 11:40:17 gilles Exp $

    # This is the smtpd server system-wide configuration file.
    # See smtpd.conf(5) for more information.

    table aliases file:/etc/smtpd/aliases

    # To also accept external mail over IPv4 or IPv6,
    # respectively replace "listen on localhost" with:
    #
    # listen on 0.0.0.0
    # listen on ::
    listen on localhost

    action "local" maildir alias <aliases>
    action "relay" relay

    # Uncomment the following to accept external mail for domain "example.org"
    #
    # match from any for domain "example.org" action "local"
    match for local action "local"
    match from local for any action "relay"

Mit dieser Konfiguration ist nach Vervollständigen der Datei /etc/smtpd/aliases der Versand lokaler Mails - beispielsweise von Systemdiensten - möglich. Die einzelnen Zeilen bewirken dabei Folgendes:

Danach kann man den OpenSMTPD aktivieren, starten und einen Test seiner Konfiguration vornehmen:

  # systemctl enable smtpd
  # systemctl start smtpd
  # smtpd -nv

OpenSMTPD-Setups als hybrider SMTP-Server

Es ist absolut kein Problem, OpenSMTPD so zu konfigurieren, dass er sowohl lokale Mails verarbeitet als auch Mails nach Aussen weiterleitet. Der Versand nach Aussen kann entweder über einen lokalen oder einen ausserhalb des eigenen Netzes befindlichen entfernten SMTP-Server erfolgen. BTW: Beide Varianten haben ihre eigenen Vor- und Nachteile.

OpenSMTPD für lokalen Versand mit Relay zu einem lokalem SMTP-Server

Ausgehende Mail aller Hosts der domain domain.de wird an den lokalen SMTP-Server auf remote.domain.de weitergeleitet, der dann den Versand nach Aussen vornimmt. Die Konfiguration der einzelnen Hosts dazu könnte folgendermassen aussehen:

    # /etc/smtpd/smtpd.conf -- smtpd(8) configuration file
    #
    # Date:   2023-10-08

    # listen on localhost (ipv4 and ipv6)
    listen on localhost hostname host.domain.de

    # tables
    table aliases file:/etc/smtpd/aliases
    table accounts { local_user = remote_user@remote.domain.de:remote_password }

    # actions
    action "local" mbox alias <aliases>
    action "remote" relay host smtps://local_user@remote.domain.de:465 auth <accounts>

    # matches
    match for local action "local"
    match from local for any action "remote"

An der ursprünglichen Konfiguration sind folgende Direktiven geändert bzw hinzugefügt worden:

Auch hier empfiehlt sich zunächst ein Test der Konfiguration:

  # smtpd -nv

OpenSMTPD für lokalen Versand mit Relay zu einem entfernten SMTP-Server

Ich habe hier ein Setup mit T-Online als entferntem SMTP-Server gewählt, aber so ähnlich sollte es auch mit GMail u.ä. funktionieren.

    # /etc/smtpd/smtpd.conf -- smtpd(8) configuration file
    #
    # Date:   2023-10-08

    # listen on localhost (ipv4 and ipv6)
    listen on localhost hostname = host.domain.de

    # tables
    table aliases file:/etc/smtpd/aliases
    table accounts { local_user = remote_user@t-online.de:remote_password }

    # actions
    action "local" mda "/usr/bin/fdm -m -u %{user.username} -a stdin fetch" alias <aliases>
    action "remote" relay host smtp+tls://local_user@securesmtp.t-online.de:587 auth <accounts> mail-from remote_user@t-online.de

    # matches
    match for local action "local"
    match from local for any action "remote"

An der ursprünglichen Konfiguration sind jetz folgende Direktiven geändert bzw hinzugefügt worden:

Auch hier ist es sinnvoll, zunächst einen Test der Konfiguration vorzunehmen:

  # smtpd -nv

Fazit

Mit schlappen 7 (in Worten: sieben) Zeilen lässt sich OpenSMTPDals lokal und remote - über eine TLS-vershlüsselte Verbindung - abliefernder SMTP Daemon konfigurieren, so what?

Links


Valid XHTML 1.0

Zurück zur Main-Site
Impressum
Created with GNU-Emacs on Sat Dec 2 13:28:47 CET 2023

Valid CSS