I've recently run into Debian wiki not recommending to set exim
's primary_hostname
explicitly. From what I can gather, here's the code that chooses primary_hostname
.
Basically, either I have FQDN in /etc/hostname
(myhostname.example.com
), or just myhostname
and a line in /etc/hosts
:
ip.add.re.ss myhostname.example.com myhostname
Now, which IP address? 127.0.0.1
or an external one?
I guess having FQDN point to localhost
is okay. So, myhostname
in /etc/hostname
, and the following in /etc/hosts
?
127.0.0.1 myhostname.example.com myhostname localhost
Looks pretty promising to me:
$ hostname
myhostname
$ hostname -d
example.com
$ hostname --fqdn
myhostname.example.com
Other than that exim
would probably use myhostname.example.com
for the greeting (EHLO
). And that might affect whether emails would be considered spam or not. That, or I must send mail from myhostname.example.com
, not from example.com
?
Can anyone possibly break the cycle for me? And well, that's not only about exim
. Are there optimal settings that would make everyone happy? Or most of them?
I'm not sure I agree with the advice to not configure
primary_hostname
explicitly. Of course it's a nice idea in principle to only configure the system's hostname in one place and then have it percolate through the rest of the system, but the 2019 reality of sending email is that you can't just change your outgoing FQDN and expect things to keep working. Ideally, the reverse-DNS of your outgoing IP-address and your HELO name will be the same and consistently resolve back to the IP-address. So it is essential to have the right IP-address configured in the external DNS for your domain. If you know your server will always have reliable access to this external DNS then there's no reason to put any of that in/etc/hosts
and I would just stick with127.0.0.1 localhost
there.For Exim I would personally recommend explicit configuration of
primary_hostname
. In addition I would draw your attention to thequalify_domain
setting, which defaults to the value ofprimary_hostname
but you may want to set explicitly to just your domain name as well.Now that I think about it, the idea behind the recommendation might be to not change a setting that affects others. But rather change any specific setting you want to change. Want to change the
From
header? Change/etc/mailname
.HELO
hostname? Changehelo_data
. Which basically boils down to:/etc/exim4/exim4.conf.localmacros
(HELO
hostname):/etc/mailname
(From
header):Then
verification
You can confirm that it works by sending a test email to port25's authentication checker:
In the recieved report there'll be a line:
Or simply add
-v
option:Alternatively, you can check the destination mailbox:
recevied by
exim
:received by
postfix
:hostname and
/etc/hosts
I believe hostname is supposed to be hostname, not FQDN.
Whether to add it to
/etc/hosts
... I'd rather not. From what I can see software these days doesn't expect hostname to be resolved to anything. Or it can be overridden. (That is, unless you use hostname as a domain name somewhere.) Which means that one needs just this for127.0.0.1
: