Le problème semble être que les bounces que je reçois n’ont pas de champ from. Ainsi, lorsque l’appel API est effectué comme ceci : https://forum.example.com/admin/email/smtp_should_reject.json?from=&to=replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com, il renvoie un 400 avec :
{"errors":["param is missing or the value is empty or invalid: from"]}
Voici un peu plus de détails des logs de mail-receiver :
Nov 03 07:34:53 mail postfix/smtpd[1044]: connect from v-108-120-yyy-74-srvr1.xxx.com[74.91.xxx.108]
<19>Nov 3 07:34:53 discourse-smtp-fast-rejection[1048]: Failed to GET smtp_should_reject answer from https://forum.example.com/admin/email/smtp_should_reject.json: 400<22>Nov 3 07:34:53 policyd-spf[1049]: : prepend Received-SPF: None (no SPF record) identity=helo; client-ip=74.91.xxx.108; helo=v-148-29-xxx-192-srvr1.xxx.com; envelope-from=<> ; receiver=mail.forum.example.com Nov 03 07:34:53 mail postfix/smtpd[1044]: NOQUEUE: reject: RCPT from v-108-120-yyy-74-srvr1.xxx.com[74.91.xxx.108]: 450 4.7.1 <replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com>: Recipient address rejected: Internal error, API request failed; from=<> to=<replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com> proto=ESMTP helo=<v-148-29-xxx-192-srvr1.xxx.com>
Cependant, même si un champ from correct était présent (en y mettant mon email), il reviendrait avec :
{"reject":true,"reason":"Mail to this address is not accepted. Check the address and try to send again?"}
Il aurait donc également rejeté le message…
Est-ce que quelque chose manque dans ma configuration ? Je n’arrive pas à comprendre.
Non. Le même SMTP, sortant fonctionne parfaitement, et entrant pour les sujets arrive aussi parfaitement, le problème est que les bounces ne sont pas visibles par le forum, il continue donc d’essayer et je me fais réprimander par mon fournisseur d’hébergement.
La réponse officielle habituelle pour ce genre de chose est malheureusement de dire « l’email, c’est compliqué ». Vous obtiendrez de bien meilleurs résultats si vous utilisez un fournisseur d’email transactionnel.
Si vous avez un budget, vous pouvez poster dans Marketplace ou je peux déplacer ce sujet là-bas pour vous.
J’ai examiné le code en question et je pense que vous avez raison - je pense que le code smtp_should_reject peut rejeter incorrectement les messages de rebond et les réponses.
J’escalade cela en interne.
En attendant, si vous désactivez le filtre de politique discourse-smtp-fast-rejection, cela permet-il au courrier de circuler ?
Wow ! Merci d’avoir fait remonter le problème ! J’étais un peu désespéré hahaha ! Je vais essayer de désactiver discourse-smtp-fast-rejection (bien que je ne sache pas trop comment faire, mais je vais chercher et je vous tiens au courant)
Je configure mon mail-receiver.yaml comme ceci (en attendant ou pour toujours ? @supermathie)
# ceci est le modèle de conteneur de réception de courrier
##
## Après avoir modifié ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild mail-receiver
##
## SOYEZ *TRÈS* PRUDENT LORS DE LA MODIFICATION !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACEMENT OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire
base_image: discourse/mail-receiver:release
update_pups: false
expose:
- "25:25" # SMTP
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
## Où le courrier électronique vers votre forum doit être envoyé. En général, il est tout à fait acceptable
## d'utiliser le même domaine que le forum lui-même ici.
MAIL_DOMAIN: community.example.com
# décommentez ceci (et le volume ci-dessous !) pour prendre en charge TLS
POSTCONF_smtpd_tls_key_file: /letsencrypt/community.example.com/community.example.com.key
POSTCONF_smtpd_tls_cert_file: /letsencrypt/community.example.com/community.example.com.crt
POSTCONF_smtpd_tls_security_level: may
POSTCONF_myhostname: community.example.com
POSTCONF_mynetworks: "127.0.0.0/8 [::1]/128 [fe80::]/64 172.17.0.0/16"
POSTCONF_smtpd_recipient_restrictions: ""
## L'URL de base pour cette instance Discourse.
## Ce sera l'URL de votre site Discourse. Par exemple,
## https://discourse.example.com. Si vous utilisez une configuration en sous-dossier,
## assurez-vous d'en tenir compte (par exemple, https://example.com/forum).
DISCOURSE_BASE_URL: 'https://community.example.com'
## La clé API maîtresse de votre forum Discourse. Vous pouvez l'obtenir
## dans l'onglet "API" de votre panneau d'administration.
DISCOURSE_API_KEY: <YOURKEY>
## Le nom d'utilisateur à utiliser pour le traitement du courrier entrant. Sauf si vous avez
## renommé l'utilisateur `system`, vous devriez le laisser tel quel.
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# décommentez pour prendre en charge TLS
- volume:
host: /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/
guest: /letsencrypt
Merci beaucoup ! Je ne m’attendais vraiment pas à ce que cela progresse davantage, mais maintenant c’est parfait et je reçois tous les autres retours !