Письма из моей системы отклоняются, когда принимающий сервер выполняет проверку HELO. Я считаю, что моя система отправляет неправильное доменное имя. Я использую exim4. Поиск в Google чего-либо о exim4 и доменах дает кошмарный список нерелевантных результатов. Точно так же поиск в Google отказов HELO дает толпу пользователей Outlook, которым необходимо включить аутентификацию SMTP. Я не могу, хоть убей, разобраться в этом простом вопросе: какое имя хоста отправляет exim и как его изменить?
К сожалению, я не могу смотреть, что exim отправляет по сети, поэтому у меня нет возможности отладить это самостоятельно. Я надеюсь, что у кого-то была эта проблема и он просто знает :).
Предполагая, что ошибка связана с данными HELO / EHLO, вы хотите использовать параметр helo_data для транспорта smtp. По умолчанию это $ primary_hostname.
remote_smtp:
driver = smtp
helo_data = host.example.com
Более подробная информация доступна в руководство.
Если это не так, вы, вероятно, захотите включить несколько примеров сообщений об отказе. Только трехзначный код и строка после него.
Команда
sudo dpkg-reconfigure exim4-config
должен предложить вам использовать основное имя хоста.
В Debian (Lenny) я обнаружил, что вы устанавливаете имя хоста в /etc/hostname
но это не распознается до перезагрузки.
$ hostname newhostname
устанавливает его сразу (но теряется при перезагрузке, поэтому вам придется сделать два).
exim4, кажется, сообщает то же самое, что и uname -n
, и я обнаружил, что это полезный способ проверить.
Имя HELO можно найти в журналах exim4. Остановите демон exim4, затем перезапустите его вручную с включенной отладкой:
/usr/sbin/exim4 -bd -d+all 2>&1 | egrep 'HELO|EHLO'
(в 2>&1|egrep 'HELO|EHLO'
часть является необязательной, она просто перенаправляет stderr на stdout, а затем передает журнал в egrep
, который отфильтрует все, кроме строк, содержащих HELO или EHLO).
Отправьте электронное письмо, и в нем должна быть одна или две строки следующего вида:
SMTP>> EHLO foobar.example.com
Имя HELO foobar.example.com
.
Есть также несколько полезных инструментов онлайн-проверки, которые предоставляют эту информацию (и многие другие полезные), например :
Вместо того, чтобы редактировать транспортный файл, как предлагает Дэвид, я бы предпочел использовать определения констант exim4 (?) И установить имя в /etc/exim4/conf.d/main/00_local_settings
(в раздельной конфигурации), например :
REMOTE_SMTP_HELO_DATA=$sender_address_domain
Не забывай бежать update-exim4.conf
перед перезапуском exim4.
Как сказал Дэвид, это, вероятно, не лучшая идея. В раздельной конфигурации вы можете установить основное имя хоста, добавив
MAIN_HARDCODE_PRIMARY_HOSTNAME = subdomain.example.com
в /etc/exim4/conf.d/main/00_local_settings
. Похоже на то это было бы PRIMARY_HOST_NAME
в монолитной конфигурации exim4.
Нужная настройка называется primary_hostname.
Для отладки можно использовать
tcpdump -A port 25
смотреть SMTP-трафик в ASCII.