When exim4 sends HELO/EHLO, how do I configure which host name it sends?
Assuming the error is complaining about the HELO/EHLO data, you want to use the helo_data option on the smtp transport. The default is $primary_hostname.
remote_smtp:
driver = smtp
helo_data = host.example.com
More information is available in the manual.
If this isn't the case, you probably want to include some example rejection messages. Just the three digit code and the string after that.
The command
sudo dpkg-reconfigure exim4-config
should prompt you for the primary hostname to use.
On Debian (Lenny) I found that you set hostname in /etc/hostname
but that this is not recognised until reboot.
$ hostname newhostname
sets it right away (but is lost on reboot, so you have to do the two).
exim4 seems to report the same as uname -n
, and I found that a useful way to test.
Which hostname is exim sending ?
One can find the HELO name in exim4's logs. Stop the exim4 daemon, then restart it manually with debugging enabled :
/usr/sbin/exim4 -bd -d+all 2>&1 | egrep 'HELO|EHLO'
(the 2>&1|egrep 'HELO|EHLO'
part is optional, it just redirects stderr to stdout, then pipe the log to egrep
, which will filter everything but lines containing HELO or EHLO).
Send an email and there should be one or two lines in the following form :
SMTP>> EHLO foobar.example.com
The HELO name is foobar.example.com
.
There are also several useful online checking tools which provide this information (and many useful others), e.g. :
- https://www.mail-tester.com (beware, only 3 free email checks per day) ;
- [email protected] (free) ;
- [email protected] (most of its feedback is not free, but for this purpose it is).
How do I change it ?
Instead of editing the transport file as suggested by David, I'd rather use exim4 constant definitions (?) and set the name in /etc/exim4/conf.d/main/00_local_settings
(in split configuration), e.g. :
REMOTE_SMTP_HELO_DATA=$sender_address_domain
Don't forget to run update-exim4.conf
before to restart exim4.
I set primary_hostname […] in /etc/exim4/exim4.conf.template
As mentioned by David, this is probably not the best idea. In split configuration, you can set the primary hostname by adding
MAIN_HARDCODE_PRIMARY_HOSTNAME = subdomain.example.com
in /etc/exim4/conf.d/main/00_local_settings
. It seems it would be PRIMARY_HOST_NAME
in monolithic exim4 configuration.