Hi Discourse,
after rebuilding mail-receiver and app this morning, i have been getting the following outcome on email that would have sent previously
Hi Discourse,
after rebuilding mail-receiver and app this morning, i have been getting the following outcome on email that would have sent previously
could this be system clock after updating the ubuntu kernel?
Right, the test email i sent bounced back with the same error, which is clear in .\launcher logs mail-receiver
okay so both the mail-receiver container and app container are set to a different time to the host system
host system - correct time
app container - wrong time
mail-receiver container - wrong time
okay so both the mail-receiver container and app container are set to a different time to the host system
they appears set to a different time zone, which is fine.
Assuming you ran these commands a couple minutes apart, this looks good.
It’s impossible to tell from these screenshots what exactly is happening.
What is the inbound address for your forum? (slightly redacted if possible)
What address is it coming from?
What’s happening with mail sent to it?
Please use text of your logs rather than screenshots.
What is the inbound address for your forum? (slightly redacted if possible)
What address is it coming from?
What’s happening with mail sent to it?
it’s connects to mail-receiver but mail-receiver sees the IP as unknown, so bounces it back, the email doesn’t land in the mail-receiver’s queue.
mail-receiver sees the IP as unknown, so bounces it back
I don’t believe this is correct. It’s a warning, not an error.
This screenshot (please make this text) indicates the address ppyem30@discourse.domain.com
is not accepted - that appears to be the reason for the failure.
I’d look more into the using backwards-compatible default setting…
line, that seems to be hinting towards the reason.
root@ubuntu:/var/discourse# Jul 17 15:40:20 ubuntu-mail-receiver postfix/master[1]: daemon started -- version 3.7.11, configuration /etc/postfix
Jul 17 15:41:32 ubuntu-mail-receiver postfix/smtpd[122]: connect from btprdrgo001.btinternet.com[65.20.50.131]
Jul 17 15:41:32 ubuntu-mail-receiver postfix/smtpd[122]: disconnect from btprdrgo001.btinternet.com[65.20.50.131] ehlo=1 quit=1 commands=2
Jul 17 15:41:32 ubuntu-mail-receiver postfix/smtpd[122]: connect from btprdrgo001.btinternet.com[65.20.50.6]
Jul 17 15:41:32 ubuntu-mail-receiver postfix/smtpd[122]: NOQUEUE: reject: RCPT from btprdrgo001.btinternet.com[65.20.50.6]: 554 5.7.1 <person@discourse.redacted.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again?; from=<ethan.redacted@btinternet.com> to=<person@discourse.redacted.com> proto=ESMTP helo=<btprdrgo001.btinternet.com>
Jul 17 15:41:32 ubuntu-mail-receiver postfix/smtpd[122]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "person@discourse.redacted.com" from client "btprdrgo001.btinternet.com[65.20.50.6]"
Jul 17 15:41:32 ubuntu-mail-receiver postfix/smtpd[122]: disconnect from btprdrgo001.btinternet.com[65.20.50.6] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
Jul 17 15:42:49 ubuntu-mail-receiver postfix/smtpd[122]: warning: hostname unassigned.quadranet.com does not resolve to address 198.55.98.78
Jul 17 15:42:49 ubuntu-mail-receiver postfix/smtpd[122]: connect from unknown[198.55.98.78]
Jul 17 15:42:49 ubuntu-mail-receiver postfix/smtpd[122]: disconnect from unknown[198.55.98.78] ehlo=1 auth=0/1 quit=1 commands=2/3
Jul 17 15:43:35 ubuntu-mail-receiver postfix/smtpd[122]: connect from unknown[196.251.92.207]
Jul 17 15:43:36 ubuntu-mail-receiver postfix/smtpd[122]: disconnect from unknown[196.251.92.207] ehlo=1 quit=1 commands=2
following
./launcher destroy mail-receiver
then following the instructions here
Delivering mail sent to discourse.DOMAINNAME.com to Discourse
Starting OpenDKIM...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Adding user `postfix' to group `opendkim' ...
<86>Jul 17 16:00:00 usermod[17]: add 'postfix' to group 'opendkim'<86>Jul 17 16:00:00 usermod[17]: add 'postfix' to shadow group 'opendkim'Done.
Starting OpenDMARC...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
<22>Jul 17 16:00:00 opendkim[25]: OpenDKIM Filter v2.11.0 starting (args: -x /etc/opendkim.conf)Adding user `postfix' to group `opendmarc' ...
<86>Jul 17 16:00:00 usermod[32]: add 'postfix' to group 'opendmarc'<86>Jul 17 16:00:00 usermod[32]: add 'postfix' to shadow group 'opendmarc'Done.
<22>Jul 17 16:00:00 opendmarc[40]: OpenDMARC Filter v1.4.2 starting (args: -c /etc/opendmarc.conf)<22>Jul 17 16:00:00 opendmarc[40]: additional trusted authentication services: (none)postfix: Postfix is using backwards-compatible default settings
Jul 17 16:00:00 ubuntu-mail-receiver postfix[52]: Postfix is using backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
Jul 17 16:00:00 ubuntu-mail-receiver postfix[52]: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=3.6" and "postfix reload"
Jul 17 16:00:00 ubuntu-mail-receiver postfix[52]: To disable backwards compatibility use "postconf compatibility_level=3.6" and "postfix reload"
Starting Postfix
Jul 17 16:00:00 ubuntu-mail-receiver postfix/master[1]: daemon started -- version 3.7.11, configuration /etc/postfix
Jul 17 16:00:28 ubuntu-mail-receiver postfix/smtpd[123]: connect from mail-ukwestazon11021090.outbound.protection.outlook.com[52.101.100.90]
Jul 17 16:00:28 ubuntu-mail-receiver postfix/smtpd[123]: NOQUEUE: reject: RCPT from mail-ukwestazon11021090.outbound.protection.outlook.com[52.101.100.90]: 554 5.7.1 <person@discourse.DOMAINNAME.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again?; from=<ethan@DOMAINNAME.com> to=<person@discourse.DOMAINNAME.com> proto=ESMTP helo=<CWXP265CU009.outbound.protection.outlook.com>
Jul 17 16:00:28 ubuntu-mail-receiver postfix/smtpd[123]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "person@discourse.DOMAINNAME.com" from client "mail-ukwestazon11021090.outbound.protection.outlook.com[52.101.100.90]"
Jul 17 16:00:28 ubuntu-mail-receiver postfix/smtpd[123]: disconnect from mail-ukwestazon11021090.outbound.protection.outlook.com[52.101.100.90] ehlo=1 mail=1 rcpt=0/1 quit=1 commands=3/4
Error Details
Error: 554 5.7.1 <person@discourse.YOURDOMAIN.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again?
Message rejected by: ubuntu-mail-receiver.localdomain
I’d look more into the
using backwards-compatible default setting…
line, that seems to be hinting towards the reason.
i tried ask.discourse.com
Supermathie is hinting at a feature supported by the Discourse direct-delivery mail-receiver setup, where you can restrict which email addresses your Discourse mail-receiver container will accept incoming mail for. This is accomplished by creating and mounting a “valid_recipients” file in your mail-receiver’s Docker container configuration, typically in mail-receiver.yml.
Here’s what this means and why you would do it:
What does mount_recipients file mean?
In your
mail-receiver.yml
, under thevolumes:
section, you add this line:- /var/discourse/shared/mail-receiver/valid_recipients:/etc/postfix/valid_recipients
This line tells Docker to map the file
/var/discourse/shared/mail-receiver/valid_recipients
from your host system into the container at/etc/postfix/valid_recipients
.
What is the valid_recipients file for?
You create the file
/var/discourse/shared/mail-receiver/valid_recipients
yourself and put one valid recipient email address per line. For example:discourse@discourse.yourdomain.com incoming+test@discourse.yourdomain.com
When you do this, only emails sent to one of these addresses will be accepted by Postfix in the mail-receiver container. All others will be rejected at the SMTP level.
Why use a valid_recipients file?
- Security: Limits who can send into your Discourse by email, reducing possible vector for spam or abuse.
- Control: You can specify exactly which addresses your forum will “listen” for, which is useful if you have lots of custom email routing or only want to allow specific group or category email addresses.
- Debugging & Filtering: It helps debug by making sure only intended recipients ever get mail accepted for processing.
Where is this documented/discussed?
The usage is outlined in various places in the Discourse incoming email setup guides on meta, but Supermathie’s post is providing a shortcut for enforcement at the Postfix (SMTP server) level, and not just within Discourse’s internal processing.
Here is an overview on setting up direct-delivery, with more detail on customizing Postfix for advanced use:
- Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver
- Customising the Postfix configuration of your mail-receiver container
You can also see specific hints about “valid_recipients” approaches in this meta answer:
Summary:
Supermathie’s hint is a way to strictly control, at the SMTP server level, which addresses Discourse will receive mail for by specifying a list of allowed recipient addresses in a “valid_recipients” file, mounted into your mail-receiver container. This helps secure and control incoming mail. For more, see the official guides:
I have followed the steps. One thing that needed clarifying was when i get to the /var/discourse/shared/mail-receiver/
directory,
should i have written
nano valid_recipients
or
nano valid_recipients.yml
.
It was a copy+paste job in mail-reciever.yml
and then another rebuild, corresponding to the below logs
root@ubuntu:/var/discourse# ./launcher logs mail-receiver
x86_64 arch detected.
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
Operating environment:
HOSTNAME=ubuntu-mail-receiver
LANGUAGE=en_US.UTF-8
MAIL_DOMAIN=discourse.DOMAINNAME.com
DOCKER_HOST_IP=172.17.0.1
PWD=/
DISCOURSE_BASE_URL=https://DOMAINNAME.com
HOME=/root
LANG=en_US.UTF-8
TERM=xterm
SHLVL=1
DISCOURSE_API_USERNAME=system
LC_ALL=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INCLUDE_DMARC=true
DISCOURSE_API_KEY=[64 digit api key redacted]
_=/usr/bin/env
Delivering mail sent to discourse.DOMAINNAME.com to Discourse
Starting OpenDKIM...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Adding user `postfix' to group `opendkim' ...
<86>Jul 17 19:38:44 usermod[16]: add 'postfix' to group 'opendkim'<86>Jul 17 19:38:44 usermod[16]: add 'postfix' to shadow group 'opendkim'Done.
Starting OpenDMARC...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
<22>Jul 17 19:38:44 opendkim[24]: OpenDKIM Filter v2.11.0 starting (args: -x /etc/opendkim.conf)Adding user `postfix' to group `opendmarc' ...
<86>Jul 17 19:38:44 usermod[31]: add 'postfix' to group 'opendmarc'<86>Jul 17 19:38:44 usermod[31]: add 'postfix' to shadow group 'opendmarc'Done.
<22>Jul 17 19:38:44 opendmarc[39]: OpenDMARC Filter v1.4.2 starting (args: -c /etc/opendmarc.conf)<22>Jul 17 19:38:44 opendmarc[39]: additional trusted authentication services: (none)postfix: Postfix is using backwards-compatible default settings
Jul 17 19:38:44 ubuntu-mail-receiver postfix[49]: Postfix is using backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
Jul 17 19:38:44 ubuntu-mail-receiver postfix[49]: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=3.6" and "postfix reload"
Jul 17 19:38:44 ubuntu-mail-receiver postfix[49]: To disable backwards compatibility use "postconf compatibility_level=3.6" and "postfix reload"
Starting Postfix
Jul 17 19:38:44 ubuntu-mail-receiver postfix/master[1]: daemon started -- version 3.7.11, configuration /etc/postfix
Jul 17 19:39:12 ubuntu-mail-receiver postfix/smtpd[171]: connect from smtp3.nottingham.ac.uk[128.243.44.55]
Jul 17 19:39:12 ubuntu-mail-receiver postfix/smtpd[171]: NOQUEUE: reject: RCPT from smtp3.nottingham.ac.uk[128.243.44.55]: 554 5.7.1 <person.self@discourse.DOMAINNAME.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again?; from=<person@nottingham.ac.uk> to=<person.xytz@discourse.DOMAINNAME.com> proto=ESMTP helo=<smtp3.nottingham.ac.uk>
Jul 17 19:39:12 ubuntu-mail-receiver postfix/smtpd[171]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "person.xytz@discourse.DOMAINNAME.com" from client "smtp3.nottingham.ac.uk[128.243.44.55]"
Jul 17 19:39:12 ubuntu-mail-receiver postfix/smtpd[171]: disconnect from smtp3.nottingham.ac.uk[128.243.44.55] ehlo=1 mail=1 rcpt=0/1 bdat=0/1 quit=1 commands=3/5
I have custom incoming email addresses for many categories. Does the format need to change to category+<tag>@discourse.DOMAINNAME.com
(for direct posting to a category)?