Per la prima email di registrazione, installata con l’ultima immagine Docker, il mio server SMTP risponde con:
Codice di ritorno inaspettato 554 (atteso 250):
"Accesso negato: l'utente `arn:aws:iam::[acct]:user/[user]' non è autorizzato a eseguire `ses:SendRawEmail' sulla risorsa `arn:aws:ses:us-west-1:[acct]:identity/[identity]'".
Tuttavia, il file di log di Discourse production.log mostra quanto segue:
Iniziata richiesta PUT "/finish-installation/resend-email" per [ip] il 2020-11-16 20:58:10 +0000
Elaborazione da parte di FinishInstallationController#resend_email come HTML
Parametri: ...
Completata con 200 OK in 23ms (Views: 6.4ms | ActiveRecord: 0.0ms | Allocations: 6023)
...
Email inviata [randid]@[hostname] (191.3ms)
A mio avviso, il sito web, o perlomeno i log, dovrebbero restituire un errore invece di un messaggio di successo.
In genere, le e-mail vengono inviate in una coda in background, quindi questo processo è invisibile all’utente.
Tuttavia, sono aperto all’idea di rendere la procedura guidata un po’ più elaborata e evidente in caso di errori, ma sarà necessario eseguire polling sul server per rilevare tali situazioni. Probabilmente si tratta di una modifica piuttosto significativa, non sono sicuro.
Per la procedura guidata: va bene se la procedura guidata non visualizza l’errore. Tuttavia, non dovrebbe nemmeno indicare che l’email è stata inviata con successo. Qualcosa di più vicino alla realtà sarebbe più utile. Se è troppo difficile mostrare lo stato di ritorno, sarebbe meglio dire: “email di registrazione aggiunta con successo alla coda. controlla /path/to/log per lo stato.”
Per il registro: il thread worker dovrebbe registrare lo stato, specialmente in caso di errore. Non conosco l’architettura, ma non vedo nulla di utile in “unicorn.stderr.log” o in nessun altro luogo. Qualcosa deve essere in grado di intercettare il codice di ritorno e il messaggio di errore…
Dopo l’accesso come amministratore, gli errori relativi alle email sono visibili dalla console di amministrazione, indicando che sono archiviati nel database e che avrebbero potuto essere accessibili tramite il database prima del completamento della prima registrazione di un amministratore.
La tabella skipped_email_logs contiene le informazioni che stavo cercando.
Se hai effettuato l’accesso al container di Discourse come utente discourse, puoi eseguire:
psql discourse -c "select * from skipped_email_logs"