Invio email non funzionante

Il mio droplet Discourse su DigitalOcean non riesce a inviare email. L’errore che ricevo è:

Mail consegnata d8f9bf03-a3ce-4b42-8226-fc4f40a9c724@foo.barbar.com (5099.4ms)

Eccezione del job: 504 5.7.4 Tipo di autenticazione non riconosciuto [BL0PR0102CA0036.prod.exchangelabs.com]

Le mie impostazioni sono:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: foo@bar.com
  DISCOURSE_SMTP_PASSWORD: "mypassword"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, valore predefinito true)

Ho provato telnet dal droplet e non restituisce errori:
telnet smtp.office365.com 587

Qual potrebbe essere il problema? Ho provato la combinazione di impostazioni SMTP localmente da Python e funziona, quindi presumo che non sia quello il problema.

Ciao,
Prova ad aggiungere:

  DISCOURSE_SMTP_AUTHENTICATION: login

E alla fine di app.yml:

 - exec: rails r "SiteSetting.notification_email='foo@bar.com'"

Ciao mik
L’esecuzione del comando exec fallisce:

FALLITO

--------------------

Pups::ExecError: rails r "SiteSetting.notification_email='foo@bar.com'"` è fallito con il ritorno #<Process::Status: pid 2229 exit 2>

Posizione del fallimento: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec è fallito con i parametri "rails r \"SiteSetting.notification_email='foo@bar.com'\"`"

9628e31c775b74ad0f3a555b6af27701aa40b1f8b86419fa44a7c389cc5e34ae

** FALLIMENTO DURANTE L'AVVIO ** scorri verso l'alto e cerca i messaggi di errore precedenti, potrebbero essercene più di uno.

./discourse-doctor può aiutare a diagnosticare il problema.

L’aggiornamento che omette il comando exec ma aggiunge:

  DISCOURSE_SMTP_AUTHENTICATION: login

non restituisce un errore; ricevo solo:
Delivered mail be6d8718-5445-48cc-a120-6d6d1eab9eb7@discourse.bar.com (4307.2ms)

Tuttavia, non ricevo ancora una email nella mia casella di posta (ho controllato anche la cartella spam).

Puoi provare questo per cercare di trovare la configurazione corretta e forse ottenere un messaggio di errore:

docker exec -t -i id_of_your_container /bin/bash

All’interno del container:

apt install s-nail
echo "Questo è il corpo del messaggio e contiene il testo" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

Puoi modificare i diversi valori (ad esempio: smtp-auth=login) per cercare di trovare quello corretto. Forse otterrai un messaggio di errore più preciso.

echo "Questo è il corpo del messaggio e contiene il messaggio" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

Funzionato e ho ricevuto la mail! Ho dovuto però cambiare smtp-auth-password="xxxxxxxx" usando le virgolette singole, dato che la mia password inizia con un ‘!’.

L’unica differenza che riesco a vedere nella mia configurazione è questo flag:
-S ssl-verify=ignore

Devo aggiungerlo anch’io?
Grazie per l’aiuto!

Prova ad aggiungere:

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

Nella tua configurazione, è equivalente a ssl-verify=ignore.

Nessun errore, ma ancora nessuna email nella casella di posta :frowning: Per riassumere, questa è la mia configurazione attuale:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: info@foo.com
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, valore predefinito true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

Per favore, riprova ad aggiungerlo (è lo stesso dell’opzione “-r” nel test della riga di comando di s-nail:

  - exec: rails r "SiteSetting.notification_email='foo@bar.com'"

L’email deve coincidere con quella del tuo account.

Controlla inoltre l’indentazione nel file app.yml e non dimenticare il “-” all’inizio. Ci sono due spazi, poi il “-”, poi uno spazio e infine “exec…” :slight_smile:

Anche io ho questo problema. Ho avviato un droplet con Discourse su Digital Ocean. Ho usato il comando “sudo ./discourse-doctor” dopo aver provato tutti questi suggerimenti e aver ricostruito ogni volta (sudo ./launcher rebuild app).

504 5.7.4 Tipo di autenticazione non riconosciuto [BL0PR01CA0015.prod.exchangelabs.com]

Anche per me s-nail all’interno del container ha funzionato senza problemi. L’ho provato anche senza la clausola “-S ssl-verify=ignore” e ha funzionato bene. Qualcuno può verificare che quanto installato sul droplet di Digital Ocean invii correttamente le email?

Chiedi ai tuoi amministratori di posta quali sono i valori validi per smtp_authentication e imposta DISCOURSE_SMTP_AUTHENTICATION su uno che funzioni.

Grazie per tutto l’aiuto, ho rinunciato e sono passato a un’altra soluzione di forum.

È Microsoft, le loro istruzioni sono le seguenti, non viene specificato alcun smtp_authentication;

  • Nome del server SMTP: smtp.office365.com
  • Porta SMTP: 587
  • Metodo di crittografia SMTP: STARTTLS

Non supportate questo tipo di server? Potreste semplicemente creare un account, connettervi e dirci quali dovrebbero essere le impostazioni?

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

Questo ha risolto il mio problema, grazie!