Exim4-Setup, mit dem ich E-Mails versenden kann, ohne ein offenes Relay zu werden

607
Drux

Ich habe also eine VPS und eine Domain erworben (zum Beispiel my_domain.com), und jetzt möchte ich meine eigene, auf exim4 basierende E-Mail-Infrastruktur für Lernzwecke einrichten. Um kein offenes Relay zu erstellen, benötige ich ein grundlegendes Verständnis der bewährten Methoden für die Authentifizierung.

Nach meinem ersten Verständnis sollte der MTA (exim4) bei der Authentifizierung in zwei Rollen agieren:

  • Wenn mein MUA (z. B. Apple Mail auf einem MacBook) über SMTP eine Verbindung herstellt, muss es auf Authentifizierung bestehen. Wenn die Absenderadresse lautet me@my-domain.com, sollte der Benutzername / das Kennwort für (Debian) Benutzer meauf dem VPS bereitgestellt werden. Mein Internetdienstanbieter weist variable IP-Adressen zu. Daher konnte ich die MAU nicht auf eine bestimmte Adresse festlegen oder den entsprechenden Bereich kennen. In jedem Fall sollte der MTA nach einer solchen Authentifizierung die Nachricht mail.your-domain.comohne weitere Authentifizierung an den betreffenden MTA (at ) senden (weiterleiten?) .

  • Wenn ein anderer MTA (um mail.your-domain.com, zum Beispiel) meinen MUA über SMTP kontaktiert, sollte er ihn nur für die Zustellung aufbewahren, wenn sich die Zieldomäne befindet my_domain.com(dh, dies als lokale Domäne zulassen), und ihn anderweitig sichern (dh nicht als offenes Relay fungieren).

Meine Fragen sind wie folgt: Ist mein grundlegendes Verständnis richtig und werden die folgenden Antworten zur dpkg-reconfigure exim4-configErreichung dieses Ziels / Ziels verwendet?

mail name: my_domain.com IP-addresses to listen on for incoming SNMP connection: (the VPS) local domains: mail;my_domain.com domains to relay mail for: (none) machines to relay mail for: (none) keep DNS-queries minimal: no delivery method for local mail: mbox format in /var/mail split configuration file into small files: no root and postmaster mail recipient: root 

Ich bin derzeit verwirrt, weil hier keine Authentifizierung erwähnt wird (oder aus welchen Gründen der MTA sogar zwischen SMTP-Verbindungen von einem MUA oder einem anderen MTA unterscheiden kann) und ob Nachrichten an andere Domänen als lokale Domänen "entleert" werden. Dies sieht für mich so aus, als würde es meinem MTA erlauben, Nachrichten my-domain.comvon überall her zu empfangen, kein offenes Relay zu sein, aber auch nicht, dass mein MUA irgendetwas über ihn sendet.

0
Dies geht über die Möglichkeiten von debconf hinaus. Sie müssen alles über die eigene Konfigurationsdatei von Exim einrichten. grawity vor 5 Jahren 1

2 Antworten auf die Frage

2
Kondybas

eximist leistungsfähig und flexibel genug, um in jeder gewünschten Rolle zu agieren. Für normale SMTP-Vorgänge ist das einzige Szenario, das für die Authentifizierung erforderlich ist, "jemand möchte die Nachricht über mich senden oder weiterleiten". Einreichung und Weiterleitung sollten stark eingeschränkt sein, um eine Exkommunikation durch DNSBLs zu verhindern. Wenn eximein Subnetz verwendet wird, ist s & r normalerweise auf dieses Subnetz beschränkt. Wenn Client-Hosts jedoch mit dynamisch geänderten IPs aus verschiedenen Subnetzen über das Internet wandern, besteht die einzige Möglichkeit, Clients zu beschränken, in der Authentifizierung.

Zunächst müssen Sie die SMTP-Verschlüsselung mit SSL / TLS aktivieren

daemon_smtp_ports = 25 : 465 : 587  tls_on_connect_ports = 465 tls_certificate = /path/exim.crt tls_privatekey = /path/exim.key 

Selbstsigniertes Paar, das von generiert opensslwird, reicht aus. Die Verschlüsselung ist eine Option für einfaches SMTP an Port 25 oder MSA an 587 und obligatorisch für SMTPS an 465.

Die Authentifizierung ist nur für verschlüsselte Clients möglich, um zu verhindern, dass der Anmeldepass über eine nicht verschlüsselte Verbindung geleitet wird:

auth_advertise_hosts = ${}{}{*}} 

Jeder Nicht-Emtpy $tls_cipher, der beim Einrichten von TLS generiert wird, ist ein gutes Zeichen, um die Authentifizierung zu beginnen.

Jetzt können wir die ACL verwenden:

acl_smtp_connect = acl_conn acl_smtp_rcpt = acl_rcpt acl_smtp_data = acl_data  begin acl ..... acl_rcpt: accept authenticated = * accept hosts = : +relay_from_hosts require domains = +relay_to_domains : +local_domains deny 

Hier akzeptieren wir die Nachricht für s & r in drei Fällen:

  1. wenn der Client authentifiziert ist
  2. wenn der Client aus der Liste der bekannten Hosts / Subnetze stammt
  3. Wenn die Nachricht eine eingehende Nachricht für eine unserer Domains ist.
  4. Letzteres denyist nicht unbedingt erforderlich, da die dritte Regel dies denyimplizit tut, aber zum besseren Verständnis möchte ich in allen Fällen die ausdrückliche endgültige Annahme / Ablehnung platzieren.

Die anderen MTAs werden im Allgemeinen durch eine dritte Regel übergeben, unabhängig davon, ob sie authentifiziert sind oder nicht. Wir können keine Authentifizierung von den anderen MTAs anfordern, da dies von RFCs nicht vorgeschrieben ist. Wir beschränken jedoch alle äußeren MTAs ausschließlich auf die Nachrichten für unsere Domänen. Wir leiten ihre Nachrichten unter keinen Umständen an die anderen Domains weiter.

587 ist _nicht_ ein Port "TLS on connect"; Die Verschlüsselung dafür muss noch über STARTTLS erfolgen. grawity vor 5 Jahren 1
@Grawity Ja, du hast absolut recht Kondybas vor 5 Jahren 0
Danke, das wird mir erlauben, loszulegen. Nur zur Verdeutlichung: Ich kontaktiere meine MUA (Apple Mail, exim4) per E-Mail, dies gilt als "Weiterleitung der Nachricht über mich" aus Sicht von exim4, oder? Drux vor 5 Jahren 0
Hier ist meine frühere Antwort auf die ähnliche Frage: https://serverfault.com/questions/626803/why-use-dovecot-and-postfix-sendmail/626809#626809 Kondybas vor 5 Jahren 0
1
wurtel

Die von der Debian-Konfiguration angebotene Einrichtung ist für die normale lokale Verwendung bestimmt. Für kompliziertere Setups, z. B. für die Authentifizierung, muss die Konfiguration manuell bearbeitet werden.

Es ist wahrscheinlich einfacher, die Split-Konfiguration neu zu konfigurieren. Dann können Sie die Authentifizierung in /etc/exim4/conf.d/auth/ aktivieren. Die Datei 30_exim4-config_examples enthält viele auskommentierte Beispiele, die ausreichen sollten, um Ihnen auf Ihrem Weg zu helfen.

Das plain_serverSnippet verwendet eine passwdDatei in / etc / exim4 /, die Benutzernamen und Passwörter enthält, die durch einen Doppelpunkt getrennt sind. Standardmäßig bietet Exim nur dann eine Authentifizierung an, wenn die Verbindung verschlüsselt ist. Dies ist eine gute Sache.

Ich benutze den Authentifizierungsdienst von dovecot, um Benutzer in exim zu überprüfen. Wenn ein Benutzer auf Dovecot zugreifen kann (z. B. IMAP), kann er auf diese Weise dieselben Anmeldeinformationen zum Senden von E-Mails über Exim verwenden.