Il problema sembra essere che i bounce che ricevo non hanno un from quindi quando viene effettuata la chiamata API come https://forum.example.com/admin/email/smtp_should_reject.json?from=&to=replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com restituisce un 400 con:
{"errors":["param is missing or the value is empty or invalid: from"]}
Ecco un po’ di più dai log di mail-receiver:
Nov 03 07:34:53 mail postfix/smtpd[1044]: connect from v-108-120-yyy-74-srvr1.xxx.com[74.91.xxx.108]
<19>Nov 3 07:34:53 discourse-smtp-fast-rejection[1048]: Failed to GET smtp_should_reject answer from https://forum.example.com/admin/email/smtp_should_reject.json: 400<22>Nov 3 07:34:53 policyd-spf[1049]: : prepend Received-SPF: None (no SPF record) identity=helo; client-ip=74.91.xxx.108; helo=v-148-29-xxx-192-srvr1.xxx.com; envelope-from=<> ; receiver=mail.forum.example.com Nov 03 07:34:53 mail postfix/smtpd[1044]: NOQUEUE: reject: RCPT from v-108-120-yyy-74-srvr1.xxx.com[74.91.xxx.108]: 450 4.7.1 <replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com>: Recipient address rejected: Internal error, API request failed; from=<> to=<replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com> proto=ESMTP helo=<v-148-29-xxx-192-srvr1.xxx.com>
Tuttavia, anche se arrivasse con un from corretto (mettendo la mia email lì), tornerebbe con:
{"reject":true,"reason":"Mail to this address is not accepted. Check the address and try to send again?"}
Quindi avrebbe rifiutato anche quello…
Mi manca qualcosa nella configurazione? Non riesco a capirlo.
No. Lo stesso SMTP, in uscita funziona perfettamente e in arrivo per gli argomenti sta arrivando perfettamente, il problema è che i bounce non sono visibili al forum, quindi continua a provare e vengo rimproverato dal mio provider di hosting.
La risposta ufficiale tipica per questo tipo di cose, sfortunatamente, è dire “l’email è difficile”. Otterrai risultati molto migliori se utilizzi un provider di email transazionali.
Se hai un budget, puoi pubblicare in Marketplace o posso spostare questo argomento lì per te.
Ho esaminato il codice in questione e credo che tu abbia ragione: penso che il codice smtp_should_reject possa rifiutare erroneamente i messaggi di rimbalzo e le risposte.
Sto segnalando la cosa internamente.
Nel frattempo, se disabiliti il filtro delle policy discourse-smtp-fast-rejection, la posta può fluire?
Wow! Grazie per averlo segnalato! Ero un po’ senza speranza hahaha! Proverò a disabilitare discourse-smtp-fast-rejection (anche se non sono sicuro di come farlo, ma cercherò e ti farò sapere)
Sto creando il mio mail-receiver.yaml in questo modo (nel frattempo o per sempre? @supermathie)
# questo è il template del container ricevitore di posta
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild mail-receiver
##
## FAI *MOLTA* ATTENZIONE QUANDO MODIFICHI!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI DI SPAZIATURA O ALLINEAMENTO!
## visita http://www.yamllint.com/ per convalidare questo file secondo necessitĂ
base_image: discourse/mail-receiver:release
update_pups: false
expose:
- "25:25" # SMTP
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
## Dove deve essere inviata l'e-mail al tuo forum. In generale, va benissimo
## usare lo stesso dominio del forum stesso qui.
MAIL_DOMAIN: community.example.com
# commenta queste righe (e il volume sottostante!) per supportare TLS
POSTCONF_smtpd_tls_key_file: /letsencrypt/community.example.com/community.example.com.key
POSTCONF_smtpd_tls_cert_file: /letsencrypt/community.example.com/community.example.com.crt
POSTCONF_smtpd_tls_security_level: may
POSTCONF_myhostname: community.example.com
POSTCONF_mynetworks: "127.0.0.0/8 [::1]/128 [fe80::]/64 172.17.0.0/16"
POSTCONF_smtpd_recipient_restrictions: ""
## L'URL di base per questa istanza di Discourse.
## SarĂ qualunque sia l'URL del tuo sito Discourse. Ad esempio,
## https://discourse.example.com. Se stai eseguendo una configurazione in sottocartella,
## assicurati di tenerne conto (ad es. https://example.com/forum).
DISCOURSE_BASE_URL: 'https://community.example.com'
## La chiave API master del tuo forum Discourse. Puoi ottenerla dalla
## scheda "API" del tuo pannello di amministrazione.
DISCOURSE_API_KEY: <YOURKEY>
## Il nome utente da utilizzare per l'elaborazione della posta in arrivo. A meno che tu non abbia
## rinominato l'utente `system`, dovresti lasciarlo così com'è.
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# commenta per supportare TLS
- volume:
host: /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/
guest: /letsencrypt