Helo-Befehl abgelehnt: Host nicht gefunden - Postfix einrichten, um das Senden von E-Mails von meinem Heimserver über meinen öffentlichen Server zu akzeptieren

8

Ich möchte System-E-Mails von meinem Heimserver erhalten. Ich versuche also, Postfix so zu konfigurieren, dass dies über meinen öffentlichen Server erfolgt. Mein öffentlicher Server hat eine feste IP, während sich mein Heimserver in einem privaten Netzwerk mit einem fehlerhaften Hostnamen befindet, da der Hostname meines Routers im Hostnamen enthalten ist, was zu einem vollständigen Hostnamen "homeserver.blablabla_crappyrouter" führt.

Mein Heimserver stellt über einen OpenVPN-Tunnel mit fester IP eine Verbindung zu meinem öffentlichen Server her, wobei mein Heimserver ein Client ist. Von meinem Heimserver zu meinem öffentlichen Server (und umgekehrt) gibt es eine feste IP, sodass sie sich problemlos über eine feste Adresse erreichen können. Dies ist ein Tunnel, mit dem ich meinen Sicherheitsserver von überall ohne Sicherheitsprobleme erreichen kann.

Meine Postfix-Konfiguration auf meinem öffentlichen Server umfasst Folgendes:

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

Und auf meinem Heimserver habe ich die IP meines öffentlichen OpenVPN-Servers mit hinzugefügt

relayhost = [<public server IP through OpenVPN>]

Jetzt sendet diese Konfiguration keine E-Mails und gibt mir den Fehler:

Helo-Befehl abgelehnt: Host nicht gefunden

Ich habe dies untersucht und festgestellt, dass Postfix nach dem Hostnamen sucht, ihn aber anscheinend aufgrund seines durcheinandergebrachten Hostnamens nicht findet.

Meine Frage: Wie kann ich dem Postfix meines öffentlichen Servers mitteilen, dass alles von meinem Heimserver blind zugelassen werden soll?

Vielen Dank.

AKTUALISIEREN:

Ich habe die Option in main.cf gesetzt

smtpd_helo_required = no

aber das hat nicht geholfen. Im Folgenden sind die Einträge /var/log/mail.log direkt nach dem Senden einer Test-E-Mail aufgeführt:

Sep  2 15:53:53 HomeServer sm-mta[6677]: t82Drr6w006677: [email protected], size=69, class=0, nrcpts=1, msgid=<[email protected]_crappyRouter>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_subject, status=failed to extract CN
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_issuer, status=failed to extract CN
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256
Sep  2 15:53:53 HomeServer sm-mta[6679]: t82Drr6w006677: [email protected], delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120069, relay=mydomain.com. [93.186.192.197], dsn=4.7.1, stat=Deferred: 450 4.7.1 <HomeServer.blablabla_crappyRouter>: Helo command rejected: Host not found

Die Mail, die ich senden möchte, lautet:

ehlo localhost
mail from: [email protected]
rcpt to: [email protected]
data
Subject: My first mail on Postfix

Hi,
Are you there?
regards,
Admin
.
quit

und ich sende es mit dem Befehl:

cat mail.txt | nc localhost 25
Der Quantenphysiker
quelle

Antworten:

7

Hier ist das Problem:

smtpd_helo_restrictions = reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

Die letzte reject_unknown_helo_hostnameAnweisung weist Postfix an, E-Mails abzulehnen, wenn der im Befehl HELO angegebene Hostname nicht aufgelöst werden kann. Wenn Sie das entfernen, sollte Ihr Problem verschwinden.

Sie sollten die vorgenommene Änderung rückgängig machen (Einstellung smtpd_helo_requiredauf no). Durch diese Änderung konnte ein Client eine Verbindung herstellen und E-Mails senden, ohne ein HELO auszuführen. Wenn der Client jedoch ein HELO ausführt, gelten die Einschränkungen in smtpd_helo_restrictionsweiterhin, wie Sie festgestellt haben.

Jenny D.
quelle
Danke für die Antwort. Eigentlich habe ich darüber nachgedacht, dies zu entfernen ... aber ist das nicht trotzdem eine Sicherheitsbedrohung? Deshalb zögerte ich, es zu tun. Was denken Sie?
Der Quantenphysiker
Es handelt sich eher um ein Problem der Spam-Prävention als um eine Sicherheitsbedrohung. Sie können die Menge an Spam ein wenig reduzieren, indem Sie sie behalten, aber Sie verlieren wahrscheinlich auch legitime E-Mails. Ich habe festgestellt, dass die Verwendung von Greylisting eine weitaus effektivere Spam-Abschreckung darstellt als die Überprüfung der HELO-Auflösbarkeit.
Jenny D
Vielen Dank. Benutze ich Greylisting? Was ist das? Könnten Sie bitte eine Referenz angeben?
Der Quantenphysiker
Aus der von Ihnen veröffentlichten Konfiguration geht hervor, dass Sie sie anscheinend nicht verwenden. Dies bedeutet, dass Ihr Server beim ersten Herstellen einer Verbindung und beim Versuch, eine E-Mail zu senden, einen vorübergehenden Fehler ausgibt und sich dann die sendende IP-Adresse, das FROM und das TO merkt. Wenn der Absender das nächste Mal eine Verbindung mit derselben IP, FROM und TO herstellt, wird die E-Mail zugelassen. Viele Spammer verwenden Botnets, die nur Spam durchpumpen und keinen Code für die Behandlung vorübergehender Fehler haben, sodass diese E-Mails niemals angezeigt werden. Legitime E-Mails werden eingehen, aber um einige Minuten verzögert.
Jenny D
Weitere Informationen zu Ihren Möglichkeiten finden Sie unter serverfault.com/questions/419407/… . Auf der Postfix-Dokumentationsseite ( postfix.org ) finden Sie Informationen zum Einrichten von Greylisting. Ihre Konfiguration zeigt auch, dass Sie RBLs verwenden. Dies reduziert natürlich auch Spam. (Als ich vor 20 Jahren mit der Antispam-Arbeit begann, befürchteten wir, dass es so viel Spam geben würde, dass E-Mails innerhalb weniger Jahre unbrauchbar würden ... Ich bin froh, dass wir uns darin geirrt haben, aber traurig, dass immer noch so viel Spam vorhanden ist herum!)
Jenny D
8

Sie können Ihre HELO-Richtlinie ändern in:

smtpd_helo_restrictions = 
    permit_mynetworks,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

... und fügen Sie die Adresse Ihres Home-Mail-Servers zur mynetworks = ...Zeile hinzu.

Obwohl die Antwort von @JennyD gültig ist und Ihr Problem lösen sollte, kann es besser sein, Ihre aktuelle HELO-Richtlinie für externe Hosts beizubehalten. Dies hat einen Vorteil: Falsch konfigurierte MTAs können keine Nachrichten an Ihren Server senden, wodurch Sie vor Spam geschützt sind (wenn auch eher ein wenig). Auf jeden Fall sind Hosts mit falscher HELO-Konfiguration zu vermuten.

Möchten Sie ein bisschen weiter, stellen Sie sicher , haben Sie zumindest reject_unknown_client_hostname unter der Liste unter dh. smtpd_client_restrictions = .... Dies verhindert Nachrichten von MTA-Hosts ohne ordnungsgemäßen Reverse-DNS-Eintrag und damit viele Botnet-Relays. Eine weitere wichtige Antispam-Maßnahme wäre SPF Policy Deamon (dh Milter-Greylist ) und natürlich SpamAssassin .

sam_pan_mariusz
quelle
1

Wenn Sie keine genaue Kontrolle über Clients haben, sollten Sie SASL trotzdem verwenden:

smtpd_delay_reject = yes

smtp_helo_restrictions =
    permit_sasl_authenticated,
    reject_unknown_helo_hostname

Dadurch können SASL-authentifizierte Hosts ohne Einschränkung einen Helo senden

Beachten Sie, dass in einigen Konfigurationen master.cf smtp_helo_restrictionssowohl für submissionals auch smtpsfür festgelegt $mua_helo_restrictionsist. In diesem Fall wird dies mua_helo_restrictionsstattdessen festgelegt.

Nyet
quelle
Das hat bei mir nicht funktioniert. Was funktioniert ist: smtpd_helo_restrictions = allow_sasl_authenticated
ChristophK