Discourse/mail-receiver: l'immagine Docker di release sembra essere obsoleta

Ciao,

Penso che l’immagine Docker ufficiale discourse/mail-receiver:release sia stata trascurata e non sia stata ricostruita da molto tempo.

Il repository GitHub è ancora attivamente mantenuto:

Tuttavia, l’immagine Docker ufficiale:

discourse/mail-receiver:release

sembra essere stata costruita quasi 2 anni fa.

Questo sembra causare problemi di compatibilità con le versioni attuali di Discourse.

Nel mio caso, la posta in entrata raggiunge correttamente il ricevitore di posta, ma viene rifiutata durante RCPT TO con:

450 4.7.1 Recipient address rejected: Internal error, API request failed

L’immagine Docker vecchia sembra ancora utilizzare il meccanismo smtp_should_reject / fast-rejection.

Tuttavia, il codice sorgente di Discourse attuale contiene questo commento:

# this endpoint has been broken for years
# and was used only in the public mail-receiver's fast rejection code,
# which is removed in https://github.com/discourse/mail-receiver/pull/33

La PR #33 ha già rimosso quel codice di fast-rejection da mail-receiver, ma quei cambiamenti non sembrano essere inclusi nell’immagine discourse/mail-receiver:release attualmente pubblicata.

La documentazione/README ufficiale di mail-receiver istruisce ancora gli utenti a utilizzare:

discourse/mail-receiver:release

Quindi mi chiedo se il processo di pubblicazione dell’immagine Docker sia stato semplicemente dimenticato dopo i recenti cambiamenti.

Potresti per favore verificare se è necessario costruire e pubblicare una nuova immagine discourse/mail-receiver:release?

Grazie!

2 Mi Piace

Aggiornamento: ho testato il ramo main attuale

Ho compilato localmente il ramo main attuale e ho riscontrato un altro problema.

L’immagine release su Docker Hub esegue ancora il vecchio codice di rifiuto rapido (fast-rejection) e fallisce durante RCPT con:

450 4.7.1 Recipient address rejected: Internal error, API request failed

Tuttavia, il ramo main attuale ha già rimosso l’implementazione di smtp_should_reject / rifiuto rapido. Dopo aver compilato main, Postfix fallisce invece con:

warning: connect to private/policy: No such file or directory
451 4.3.5 Recipient address rejected: Server configuration problem

Ho tracciato questo problema a due riferimenti residui nel Dockerfile:

check_policy_service unix:private/policy

Il servizio policy è stato rimosso, ma smtpd_recipient_restrictions fa ancora riferimento al suo socket.

Ho rimosso unix:private/policy da smtpd_recipient_restrictions, ho ricompilato l’immagine e la posta SMTP in entrata è stata quindi accettata con successo.

Dopo il passaggio a una Global API Key, anche la consegna a Discourse ha avuto successo:

dsn=2.0.0, status=sent (delivered via discourse service)

Sembra quindi che ci siano due problemi separati:

  1. L’immagine discourse/mail-receiver:release pubblicata è obsoleta e contiene ancora la vecchia implementazione di rifiuto rapido.
  2. Il ramo main attuale ha rimosso quell’implementazione, ma il Dockerfile configura ancora Postfix per utilizzare unix:private/policy.

Potrebbe esserci anche un problema separato con le API key granulari: una key limitata solo a receive emails ha restituito HTTP 404 da /admin/email/handle_mail, mentre una Global API Key ha restituito HTTP 200.

Posso inviare una PR per i due riferimenti obsoleti a private/policy nel Dockerfile, se ciò fosse utile.

2 Mi Piace

Posso confermare l’immagine di release obsoleta da un altro cambiamento in mail-receiver.

Ho aperto questa PR, che è stata fusa l’11 agosto:

Modifica il mail receiver da:

post.set_form_data(email: @mail)

al nuovo parametro email_encoded atteso da Discourse.

Dopo la fusione della PR, ho ricostruito mail-receiver il 17 agosto, ma il container appena ricostruito conteneva ancora:

post.set_form_data(email: @mail)

Ho aggiunto i dettagli alla PR fusa qui:

Ho ricostruito di nuovo il 22 agosto e ./launcher rebuild mail-receiver ha segnalato che l’immagine di release pubblicata era aggiornata, con digest:

sha256:2a0d45bb92a783c846a821e635413764eeadb3441ef6190085545a4bf054cb1e

La posta in entrata funziona ancora sulla mia installazione, ma ogni email ricevuta continua a scatenare l’avviso di Discourse:

the email parameter is deprecated

poiché l’immagine pubblicata non contiene la modifica della #37 fusa.

Quindi, questo sembra confermare in modo indipendente il primo problema che hai riscontrato: le modifiche fuse nel repository mail-receiver non stanno arrivando nell’immagine discourse/mail-receiver:release pubblicata.

2 Mi Piace

Dopo averne discusso internamente, concordo che il progetto si trovi in uno stato bizzarro… è mantenuto? Non è mantenuto? È difficile da dire.

Internamente utilizziamo un’immagine diversa, questa è destinata solo a chi la ospita in autonomia e spesso gli aggiornamenti vengono trascurati.

Stiamo cercando di capire se abbandonare la pubblicazione di Docker qui e spostarla su un account personale, oppure se continuare a mantenerla.

1 Mi Piace

Mantieni questo elemento, per favore. È necessario e relativamente molto usato.

2 Mi Piace

Sarebbe fantastico se quella potesse in qualche modo funzionare anche per chi effettua l’auto-ospitamento.

Mi manca la vecchia versione che gestiva correttamente i rimbalzi e notificava a Discourse di non inviarli. Questo rendeva superflui gli aggiornamenti dell’API di Mailgun, che non comprendo del tutto in una configurazione multisito.