Ho configurato Amazon SES.
Sono fuori dalla sandbox, il che significa che posso inviare email a indirizzi non verificati.
Da documentazione Amazon SES:
Quando il tuo account è fuori dalla sandbox, puoi inviare email a qualsiasi destinatario, indipendentemente dal fatto che l’indirizzo o il dominio del destinatario sia verificato. Tuttavia, devi comunque verificare tutte le identità che utilizzi come indirizzi “Da”, “Sorgente”, “Mittente” o “Return-Path”.
Ho anche configurato le mie credenziali SMTP.
L’invio di un’email di prova a un destinatario non verificato funziona dalla dashboard di Amazon S3 o da qualsiasi altro strumento di test SMTP.
Tuttavia, non funziona da Discourse.
app.yml:
DISCOURSE_SMTP_ADDRESS: email-smtp.eu-west-3.amazonaws.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: AKIA****************
DISCOURSE_SMTP_PASSWORD: "*************************************"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, predefinito true)
DISCOURSE_SMTP_DOMAIN: forum.monocycle.info # (indirizzo da cui inviare le notifiche)
DISCOURSE_NOTIFICATION_EMAIL: noreply@forum.monocycle.info # (indirizzo da cui inviare le notifiche)
Quando invio un’email di prova da Discourse, l’email viene saltata con questo messaggio di errore:
554 Messaggio rifiutato: l’indirizzo email non è verificato. Le seguenti identità non hanno superato il controllo nella regione EU-WEST-3: monocycle.info+verp-3a76559e11c2b9a318165af8eb968f22@gmail.com…
E ovviamente ho ricostruito la mia app dopo aver modificato app.yml.
Hai qualche idea sul motivo per cui si verifica questo problema e su come risolverlo?
Quel messaggio di errore suggerisce che è necessario creare un’identità per monocycle.info@gmail.com e verificarla. Tieni presente che non è necessario verificare l’etichetta (+verp-...) poiché tutte le etichette saranno accettate quando l’indirizzo viene verificato senza etichetta.
Il motivo è che l’indirizzo email di risposta viene utilizzato come indirizzo Return-Path, uno dei tipi che la tua citazione evidenzia come necessitante di verifica.
Non sono sicuro del perché l’invio in altri modi funzioni, ma penso che i test del tuo dashboard Amazon e dello strumento di test SMTP probabilmente abbiano funzionato perché stavano inviando al tuo indirizzo email di risposta, piuttosto che utilizzarlo come indirizzo Reply-To/Return-Path come fa Discourse.
Ho verificato monocycle.info@gmail.com e Discourse può inviare email agli utenti. Anche la funzione di risposta via email funziona.
Vedrò nei prossimi giorni se avrò qualche problema.
Puoi chiarire un po’ di più? Riguardo a quello che ho appena scritto (le cose sembrano funzionare).
Amazon li chiama etichette (labels), supponendo che tu ti riferisca agli indirizzi user+label@domain. Non ricordo se questo sia il termine e-mail o solo il termine di Amazon. Sei sicuro che non siano supportati? Sono abbastanza comunemente usati dagli utenti.
L’unica cosa che riesco a trovare nella documentazione è che l’estensione SMTPUTF8 non è supportata, limitando la parte locale (prima della @) ai caratteri ASCII a 7 bit. Questo include il carattere +.
Beh, le mie risposte possono essere un po’ imprecise dato che non capisco molto le cose relative alle email.
La mia impostazione di risposta via email è effettivamente un indirizzo Gmail che usa il “+” e cose simili.
Se l’impostazione rispondi via email è disattivata, allora l’invio di email di Discourse funziona (se ricordo bene).
Se l’impostazione rispondi via email è attivata, e se non verifico l’indirizzo Gmail in SES, allora Discourse non invierà alcuna email, sia che abbiano un indirizzo di risposta Gmail o meno (ad esempio, l’email di test o un’email digest non hanno l’indirizzo di risposta Gmail), e restituirà un errore 554 Message rejected: Email address is not verified.
Se verifico l’indirizzo Gmail su SES, allora tutte le email inviate da Discourse sembrano funzionare, sia che abbiano un indirizzo di risposta Gmail o meno.
Naturalmente, mi piacerebbe sapere un po’ di più su come funzionano tutte queste cose, ma finché funziona… Questa è la mia preoccupazione principale.