Mail-Receiver eingerichtet, aber die Website sendet jetzt keine E-Mails mehr?

Hm. Ich habe die gleiche Vultr-Einrichtung wie @MathiasFoster und @jryans hier und bin auf das gleiche Problem (Net::OpenTimeout) gestoßen. ufw allow https hat meine eingehende E-Mail zum Laufen gebracht.

Aber jetzt kann die Website keine E-Mails mehr senden. Bevor ich die eingehende E-Mail eingerichtet habe, funktionierte die ausgehende E-Mail einwandfrei.

Ich habe nichts Besonderes am Laufen:
notification_email ist admin@tasat.org.
Ausgehende E-Mails verwenden smtp.titan.email bei Hostinger.

mail_receiver.yml enthält:

`MAIL_DOMAIN` = forum.tasat.org
`DISCOURSE_MAIL_ENDPOINT` = https://forum.tasat.org/admin/email/handle_mail
`DISCOURSE_API_KEY` = [redacted]

In skipped email sehe ich \u003creplies+verp-14c9cc6eb915b08d4983c90c744ba4b4@forum.tasat.org\u003e: Sender address rejected: not owned by user admin@tasat.org

Ich bin neu in der E-Mail-Herstellung. Sollte ich forum. aus den mail_receiver.yml-Strings entfernen und “replies@tasat.org” zu einem sendenden Alias von “admin@tasat.org” machen?

Der Mail-Empfänger ist unabhängig von Discourse und dem E-Mail-Versand. Er fungiert lediglich als einfacher E-Mail-Server, der nur zum Empfangen von E-Mails konfiguriert ist und die Discourse-API verwendet, um diese E-Mails in Discourse einzuspeisen.

Das Einzige, was mir bei der Einrichtung einfällt, das den Versand beeinträchtigen könnte, ist die Einstellung von reply by email address. Das sollte jedoch nur das Reply-To bei ausgehenden E-Mails setzen und nicht die Absenderadresse beeinflussen.

Nur zur Bestätigung, es scheint, dass Sie diese (neben den anderen) in app.yml haben:

DISCOURSE_SMTP_USER_NAME: admin@tasat.org
DISCOURSE_NOTIFICATION_EMAIL: admin@tasat.org

Und diese in reply by email address:

replies+%{reply_key}@forum.tasat.org

Ist das richtig?

Wenn ja, funktionieren E-Mail-Benachrichtigungen, die keine Antworten akzeptieren, immer noch? Ich glaube, die E-Mail-Verifizierung ist ein Beispiel dafür, daher könnten Sie versuchen, ein Konto zu erstellen und zu sehen, ob diese E-Mail erfolgreich gesendet wird.

Bei dieser Konfiguration sollte das gesendete E-Mail Folgendes verwenden:
From: admin@tasat.org (auch Absenderadresse)
Reply-To: replies+abc123@forum.tasat.org

Normalerweise wird Reply-To nicht als Teil der Absenderinformationen behandelt. Es gibt lediglich eine Standard-To-Adresse an, die verwendet wird, wenn Personen antworten. Vielleicht behandelt Hostinger es jedoch so. Möglicherweise können Sie einen Sende-Alias für replies@forum.tasat.org hinzufügen.

1 „Gefällt mir“

Was passiert, wenn Sie versuchen, eine Test-E-Mail an eine Adresse zu senden, die Sie von https://www.mail-tester.com/ erhalten?

Ich kann nicht sehen, wie die Änderung von ufw allow https die eingehende E-Mail beeinträchtigen könnte.

Es könnte sein, dass Vultr ausgehende Verbindungen zu Port 25 nicht zulässt. Das würde erklären, warum die ausgehende E-Mail nicht funktioniert.

Ausgehende und eingehende E-Mails sind weitgehend voneinander getrennt.

Ich glaube, Vultr (oder vielleicht nur die Installation von Docker, wenn ufw vorhanden ist) hat einige Regeln, die verhindern, dass Container miteinander kommunizieren, was bedeutet, dass der Mail-Empfänger keine Verbindung zu Discourse herstellen kann. ufw allow https umgeht das.

1 „Gefällt mir“

Aber Docker umgeht doch ufw, oder?

1 „Gefällt mir“

Im Standardnetzwerk, nur wenn ein Container direkt über die lokale IP-Adresse mit einem anderen Container verbunden ist, ist dies die lokale IP-Adresse des Containers selbst.

Wenn der Mail-Empfänger Ihren Discourse-Domainnamen nachschlägt, erhält er nicht diese lokale IP-Adresse, sodass er sein Docker-Netzwerk verlassen muss und mindestens einmal durch ufw geleitet wird, um Discourse zu erreichen.

1 „Gefällt mir“

Ich habe über dieses Thema nachgedacht, an dem du auch teilgenommen hast:

1 „Gefällt mir“

Das ist eine separate, wenn auch verwandte Situation. Das sind Verbindungen, die von außen kommen, und Docker fügt Regeln hinzu, um exponierte Ports zuzulassen.

Ich bin nicht sehr vertraut mit netfilter/iptables Chain-Regeln, aber ich glaube, das oben zeigt:

  1. Wenn die Verbindung von docker0 kommt, d. h. aus dem Standard-Docker-Netzwerk, kehrt sie zur vorherigen Kette zurück (stoppt die Verarbeitung von Regeln in dieser Kette).
  2. Andernfalls, wenn die Verbindung von etwas anderem als docker0 kommt und es sich auch um HTTPS oder HTTP handelt, wird DNAT angegeben, wodurch sie zur FORWARD-Kette weitergeleitet wird.

Bei der im anderen Thema gezeigten Anordnung geschieht also Folgendes: Wenn HTTPS- oder HTTP-Traffic von außen kommt, wird er zu Docker geleitet. Wenn der Traffic jedoch aus dem Docker-Netzwerk kommt, wird er zurückgegeben und von der INPUT-Kette abgelehnt oder verworfen.

Was ufw allow https tut, ist das Hinzufügen einer Regel zur INPUT-Kette, die sie akzeptiert. Auf diese Weise wird die Verbindung, wenn sie wie oben zur INPUT-Kette zurückgegeben wird, akzeptiert und findet Docker, das lauscht, und wird schließlich an den Container weitergeleitet.

1 „Gefällt mir“

@Simon_Manning @pfaffman

EDIT: siehe Ende der Nachricht

Danke für die Antworten! Ich war eine Weile weg, aber ich grabe mich wieder ein…

Ja, das ist es, was ich im Moment habe.

Wenn ich jetzt versuche, ein Konto zu erstellen, tut der Submit-Button nichts. Als ob er wüsste, dass es nicht funktionieren wird. (Und nichts erscheint unter Skipped oder anderswo.)

Edit: Ich habe “replies@tasat.org” als Sende-Alias für admin@tasat.org eingerichtet und bestätigt, dass es für das Senden und Empfangen funktioniert. Ich habe auch die Zustellung einer E-Mail bestätigt, die von einem externen Client an replies+verp-174bc7d8411bc4ec2cfa84c55bd31425@forum.tasat.org gesendet wurde.

Um etwas zu versuchen, habe ich reply by email address geändert:
von replies+%{reply_key}@forum.tasat.org
zu replies+%{reply_key}@tasat.org

Aber es ändert nichts an den Ergebnissen.

Sie kommt nicht bei mail-tester an. Alle ausgehenden Versuche landen unter “skipped” mit einer Vielzahl dieser Nachricht:

553 5.7.1 <replies+verp-8c79cd4e83023bda6df0624c2cacd36e@tasat.org>:
Sender address rejected: not owned by user admin@tasat.org

Vielleicht ist das interessant..? Wenn ich discourse-doctor ausführe, schlägt der ausgehende E-Mail-Verkehr wie folgt fehl:

==================== MAIL TEST ====================
Für einen robusten Test holen Sie sich eine Adresse von http://www.mail-tester.com/
Sende Mail an REDACTED . .
Teste Senden an admin@tasat.org unter Verwendung von smtp.titan.email:587,
Benutzername:admin@tasat.org mit einfacher Authentifizierung.
SMTP-Serververbindung erfolgreich.
Senden an admin@tasat.org. . .
Mail wurde nicht gesendet.

Grund: 553 5.7.1 <replies+verp-3cc19f7b135e6f56219e030999db9e29@tasat.org>:
Sender address rejected: not owned by user admin@tasat.org

Das direkte Senden an die replies±Adresse (oder eine forum.tasat.org-Adresse) von einem E-Mail-Client aus funktioniert – es folgt dem “replies”-Alias und landet im Admin-Posteingang. Woher kommt die Ablehnung?

Ich habe mir den Artikel “Prevent outgoing host email from interfering” angesehen. Ich habe keinen Pfad /etc/postfix – aber hier ist meine netstat-Ausgabe:

root@forum:/var/discourse# netstat -tulpn | grep :25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1487576/docker-prox
tcp6       0      0 :::25                   :::*                    LISTEN      1487581/docker-prox

HAUPT-EDIT – Ich habe heute Abend von Titan-Support erfahren: “Die Reply-To-Adresse und die Von-Adresse müssen gleich sein, sonst wird die E-Mail nicht durchgehen.” Ich schätze, die ganze Fehlersuche ist hinfällig und ich muss nach einem neuen E-Mail-Host suchen, der diese Anforderung nicht stellt.

Es ist sicherlich nicht erschöpfend, aber es gibt einige Empfehlungen für E-Mail-Versanddienste in der Installationsdokumentation zusammen mit einigen grundlegenden Informationen zur Verwendung in Discourse: discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub

Das folgende Thema (am Ende dieses Dokuments verlinkt) enthält auch Informationen zur Behandlung von Bounces für diese und andere:

Ich selbst nutze den Mailgun Flex-Tarif (vollständig innerhalb der kostenlosen Freimenge), aber ich weiß, dass es Verwirrung um deren Preisgestaltung gab und sich möglicherweise Dinge für neue Benutzer geändert haben, seit ich beigetreten bin. Soweit ich das letzte Mal gesehen habe (keine Ahnung, ob das noch stimmt), war es möglich, nach Ablauf der Testphase zu Flex zu wechseln, es war nur unglaublich unklar.

Richtig.
Sie können zu Mailgun Flex wechseln, obwohl es schwierig ist, dies herauszufinden. Etwa einmal im Monat schreibe ich ihnen eine E-Mail und frage, warum es so schwer zu finden ist.

@Simon_Manning & @pfaffman – nochmals vielen Dank für die Beiträge und Hinweise, sie haben mich auf den richtigen Weg gebracht.

Ich habe mich entschieden, MailerSend auszuprobieren, da deren aktueller kostenloser Plan ziemlich großzügig ist. Er sollte für unsere gemeinnützige Arbeit eine Weile ausreichen. Bisher läuft alles gut :grin:

5 „Gefällt mir“