==================== MAIL TEST ====================
Per un test robusto, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di prova a te stesso.
Indirizzo email per il test di posta? ('n' per saltare) [admin@burlyqna.org]:
Invio posta a admin@burlyqna.org. . .
Test di invio a admin@burlyqna.org utilizzando smtp.mailfence.com:465, username:philion@mailfence.com con autenticazione plain.
Connessione al server SMTP riuscita.
Invio a admin@burlyqna.org. . .
Invio posta fallito.
fine del file raggiunta
C’è molta discussione sul 465 nei forum di supporto. In base alla mia lettura, sembra che Discourse faccia molte supposizioni su SSL e TLS su SMTP, e ci sono una manciata di variabili d’ambiente che controllano i comportamenti dettagliati.
Tuttavia, dato il numero di errori segnalati e domande correlate in questi forum, ho la forte impressione che queste impostazioni siano scarsamente documentate e difficili da usare. E vedendo problemi simili risalenti al 2017, questo è un problema da anni ormai.
Le ricerche per “porta 465” o “Net::ReadTimeout smtp” possono rivelare un lungo elenco di problemi simili.
Sto cercando di trovare questo file nella build di Docker e non ci riesco. Vedo che è racchiuso in un container, ma ho clonato discourse/discourse_docker non discourse/discourse.
Quando provo ad accedere all’app con launcher enter app, non c’è modo di modificare quel file o di installare vi.
Non riesco a trovare alcuna documentazione o flag per eseguire ./discourse-doctor con i log di debug attivati.
Fallisce nello stesso modo: Impossibile inviare email, ./discourse-doctor riporta lo stesso errore.
Ho aggiornato le password per rimuovere i simboli, ho atteso il ritardo di propagazione dell’autenticazione SMTP (abbastanza a lungo da preparare il pranzo), ho confermato le credenziali corrette per inviare correttamente email con swaks, e…
Stesso errore.
Noto che la ricostruzione rimuove il dump dello stack trace, quindi lo aggiungerò di nuovo e proverò ./launcher destroy app && ./launcher start app
==================== MAIL TEST ====================
Per un test robusto, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di test a te stesso.
Indirizzo email per il test di posta? ('n' per saltare) [admin@burlyqna.org]:
Invio posta a admin@burlyqna.org. . .
Test invio a admin@burlyqna.org usando smtp.mailfence.com:465, username:philion con autenticazione plain.
Connessione al server SMTP riuscita.
Invio a admin@burlyqna.org. . .
Invio posta fallito.
fine del file raggiunta
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'
Dopo molti test e con l’aiuto di @thoka, offro il seguente riassunto:
Sono in grado di eseguire test SMTP utilizzando le stesse credenziali che ho fornito a container/app.yml che funzionano sia con swaks (Swaks - Swiss Army Knife for SMTP) sia con il codice Ruby di esempio fornito da @thoka (vedi sotto).
Questi funzionano in modo coerente. Tuttavia, tentare di avviare un server Discourse (che non riesce a inviare l’email iniziale all’utente amministratore) o utilizzare il bot discourse-doctor provoca errori di posta elettronica:
==================== MAIL TEST ====================
Per un test robusto, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di prova a te stesso.
Indirizzo email per il test di posta? ('n' per saltare) [admin@burlyqna.org]:
Invio posta a admin@burlyqna.org. . .
Test di invio a admin@burlyqna.org utilizzando smtp.mailfence.com:465, nome utente:xxx@mailfence.com con autenticazione plain.
Connessione al server SMTP riuscita.
Invio a admin@burlyqna.org. . .
Invio posta fallito.
fine del file raggiunto
Sembra essere un errore di configurazione del protocollo, poiché sono in grado di inviare email di prova utilizzando strumenti Ruby standard:
require 'mail'
SMTP_SERVER = 'smtp.mailfence.com'
SMTP_PORT = 465
USERNAME = 'xyz'
PASSWORD = '...'
FROM = 'admin@burlyqna.org'
TO = 'testing@gmail.com'
SUBJECT = 'Test da Ruby'
BODY = "Ciao,\n\nQuesta è un'email di test inviata da Ruby tramite una connessione protetta SSL.\n\nCordiali saluti!"
Mail.defaults do
delivery_method :smtp, {
address: SMTP_SERVER,
port: SMTP_PORT,
user_name: USERNAME,
password: PASSWORD,
domain: "burlyqna.org",
enable_starttls_auto: :false,
authentication: :plain,
ssl: true,
}
end
begin
puts 'Invio email...'
puts "SMTP_SERVER: #{SMTP_SERVER}"
puts "SMTP_PORT: #{SMTP_PORT}"
puts "USERNAME: #{USERNAME}"
puts "PASSWORD: #{PASSWORD}"
puts "FROM: #{FROM}"
puts "TO: #{TO}"
mail = Mail.new do
to TO
from FROM
subject SUBJECT
body BODY
end
mail.deliver!
end
Le attuali impostazioni SMTP nel mio app.yml sono: