Ich möchte Postfix auf einem Debian VPS ausführen, um E-Mails von meiner Anwendung aus zu senden. Die Anwendung (die auf anderen VPS ausgeführt wird) stellt über SMTP eine Verbindung zu Postfix her. Postfix muss eingehende E-Mails nicht verarbeiten. Es geht nur darum, die ausgehenden Nachrichten zu senden.
Um zu verhindern, dass es sich um ein offenes Relay handelt, sollte die SASL-Authentifizierung verwendet werden. Ich möchte jedoch nicht Dovecot oder MySQL für die SASL-Authentifizierung ausführen.
Wie kann ich die SASL-Authentifizierung mithilfe einer einfachen Datei (mit Benutzernamen und Kennwörtern) einrichten?
Ich habe bereits eine ähnliche Frage gefunden ; Dort wurden jedoch keine zufriedenstellenden Antworten gegeben.
Antworten:
Postfix unterstützt derzeit nur zwei SASL-Authentifizierungsmethoden. Eines davon ist Dovecot, das Sie nicht wollen. Der andere ist Cyrus, der ungefähr so nah an dem ist, was Sie wollen, ohne Postfix neu zu schreiben. Es wird zwar ein separater Authentifizierungsdämon (
saslauthd
) ausgeführt, die Authentifizierungsdatei kann jedoch leicht bearbeitet und aktualisiert werden.Die Grundlagen zur Verwendung von Cyrus SASL finden Sie auf der Postfix-Dokumentationsseite. Hier finden Sie eine kurze Beschreibung. Bitte schauen Sie auf den Link, wenn etwas in irgendeiner Weise verwirrend ist!
Beginnen Sie mit der Installation von Cyrus SASL mit dem Plugin
sasldb
. (Die Vorgehensweise bleibt dem Leser als Übung überlassen. Vermutlich befindet sich in dem von Ihrer Unix-Marke verwendeten Paketsystem ein Paket.) Da die Kommunikation zwischen Postfix und SASL über einen Unix-Domain-Socket erfolgt, möchten Sie dies möglicherweise Fügen Sie der SASL-Gruppe Postfix hinzu, und stellen Sie sicher, dass diese Gruppe über Lese- und Ausführungsberechtigungen für das Verzeichnis verfügt/var/run/saslauthd
.Konfigurieren Sie SASL
Konfigurieren Sie SASL für die Verwendung von sasldb, indem Sie /etc/sasl2/smtpd.conf bearbeiten:
Das sasldb-Plugin bedeutet, dass sasl eine Berkeley DB-Datei für Benutzernamen und Passwörter verwendet. Sie fügen Benutzer mit dem Befehl hinzu
saslpasswd2
:Beachten Sie, dass Sie eine Domain zusammen mit dem Benutzernamen angeben und der Benutzer bei der Authentifizierung "[email protected]" und nicht nur "username" verwenden muss.
Sie können überprüfen, welche Benutzer eingegeben wurden, indem Sie ausführen
sasldblistusers2
.Starten Sie saslauthd und überprüfen Sie, ob die Authentifizierung funktioniert
Konfigurieren Sie Postfix
Sobald dies erledigt ist, weisen Sie Postfix an, SASL zu verwenden, und Cyrus mitzuteilen, dass es sich um SMTP handelt, das authentifiziert wird, indem Sie /etc/postfix/main.cf bearbeiten, um es zu enthalten
Laden Sie dann Postfix neu, und Sie sollten eingestellt sein.
quelle
sasldblistusers2
Gibt die Liste der Benutzer, die ich hinzugefügt habe, korrekt aus. Bei der Aufführungtestsaslauthd
erhalte ich jedoch folgendes Ergebnis :0: NO "authentication failed"
. Haben Sie eine Idee, wie ich das beheben könnte? Dies ist von meinem/var/log/auth.log
:saslauthd[30471]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=pam] [reason=PAM auth error]
-s smtpd
, daran anzuhängen . Wenn ich gesetztMECHANISMS="sasldb"
in/etc/default/saslauthd
und Neustart saslauthd, erhalte ich das gleiche Ergebnis von testsaslauthd. Das Authentifizierungsprotokoll zeigt eine andere Nachricht:saslauthd[3706]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=sasldb] [reason=Unknown]
testsaslauthd -u username -r example.com -p XXX
Renditen0: OK "Success."
. Jetzt werde ich prüfen, ob Postfix dies umgehen kann ...-s smtpd
Sie dafür sorgen, dass PAM anstelle von sasldb verwendet wird. Tun Sie das also nicht ...SASL ist nur eine von zahlreichen Möglichkeiten, dies zu verhindern. Eine andere Möglichkeit wäre, die IP-Adressen, die Sie auf den anderen VPS verwenden, auf die Whitelist zu setzen oder TLS-Client-Zertifikate zu verlangen (dies kann als der sicherste Weg bezeichnet werden).
Richten Sie einfach eine signierende Zertifizierungsstelle auf dem Postfix-Computer ein und signieren Sie ein Zertifikat pro VPS, das Sie per E-Mail senden möchten.
Fordern Sie dann eine vollständige Überprüfung des Client-Zertifikats für alle gesendeten E-Mails an. Deaktivieren Sie alle anderen Übermittlungsmethoden.
Was Sie fragen, ist nicht möglich, da Postfix SASL nicht direkt unterstützt.
quelle
Nur ein paar Dinge klären,
Erstellen eines Kontos in sasldb:
Testen der Authentifizierung:
(Hinweis: Dem Benutzernamen folgt nicht der fqdn)
Ich möchte auch hinzufügen, dass ein Root-Konto erstellt wird
lässt Sie nicht authentifizieren,
Dies ist jedoch kein Fehler. Es ist nur ein Sicherheitsmerkmal.
quelle
Wenn Sie eingehende E-Mails nicht bearbeiten müssen, kümmern Sie sich nicht um die Authentifizierung. Blockieren Sie einfach eingehenden Datenverkehr mit einer Firewall und / oder beschränken Sie ihn nur auf localhost.
Kein offenes Relay-Problem mehr, und Sie vermeiden es, Dinge für Anwendungen zu komplizieren, die E-Mails über Postfix senden müssen.
quelle