The problem seems to be that the bounces I am receiving don’t come with a from so when the API call is made like https://forum.example.com/admin/email/smtp_should_reject.json?from=&to=replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com it returns a 400 with:
{"errors":["param is missing or the value is empty or invalid: from"]}
here’s a bit more of the mail-receiver logs
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>
However, even if it came with a right from (putting my email there) it comes back with
{"reject":true,"reason":"Mail to this address is not accepted. Check the address and try to send again?"}
So it would’ve rejected that as well…
Am I missing something on the config? I can’t figure it out
Nope. The same SMTP, outgoing is working perfectly, and incoming for topics it’s also arriving perfectly, the problem is bounces are not visible to the forum so it keeps trying and I get scolded by my hosting provider
The typical official answer for this sort of thing unfortunately is to say “email is hard”. You will get much better results if you use a transactional email provider.
If you have a budget, you can post in Marketplace or I can move this topic there for you.
I’ve reviewed the code in question and I believe you are right - I think the smtp_should_reject code may be incorrectly rejecting bounce messages and replies.
I’m escalating this internally.
In the meanwhile, if you disable the discourse-smtp-fast-rejection policy filter does it allow mail to flow?
Wow! Thank you for escalating it! I was a little bit hopeless hahaha! I will try disabling discourse-smtp-fast-rejection (although I am not sure how to do that, but I will search and report back)
I am making my mail-receiver.yaml like this (in the meantime or forever? @supermathie)
# this is the incoming mail receiver container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild mail-receiver
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed
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
## Where e-mail to your forum should be sent. In general, it's perfectly fine
## to use the same domain as the forum itself here.
MAIL_DOMAIN: community.example.com
# uncomment these (and the volume below!) to support 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: ""
## The base URL for this Discourse instance.
## This will be whatever your Discourse site URL is. For example,
## https://discourse.example.com. If you're running a subfolder setup,
## be sure to account for that (ie https://example.com/forum).
DISCOURSE_BASE_URL: 'https://community.example.com'
## The master API key of your Discourse forum. You can get this from
## the "API" tab of your admin panel.
DISCOURSE_API_KEY: <YOURKEY>
## The username to use for processing incoming e-mail. Unless you have
## renamed the `system` user, you should leave this as-is.
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# uncomment to support TLS
- volume:
host: /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/
guest: /letsencrypt