Как описано в заголовке. Если mydomain.com
это локальный домен, зачем exim пытаться доставлять почту, связываясь с ним, а не просто хранить ее в локальном mbox? Т.е. когда я делаю echo hello | mail root
, он отправляет электронное письмо на root@mydomain.com
связавшись с MX, указанным в mydomain.com
. Конфиги являются стабильной версией Debian по умолчанию.
Кстати, именно такого поведения я и хочу, так как mydomain.com
использует Google Apps, поэтому я хочу, чтобы вся почта доставлялась на указанный там MX, но я также хочу, чтобы мой сервер вел себя так же, как и его собственное имя (т.е. его локально отправляемая почта должна быть с @mydomain.com
). Должен ли я тогда настраивать exim по-другому?
Exim не обязательно предполагает какую-либо магию в вашей системе - он будет направлять именно туда, куда вы ему скажете.
Тем не менее, файл конфигурации по умолчанию обычно заполняет local_domains
список доменов со значением @
, что просто означает «доменное имя этого хоста». Затем, позже dnslookup
маршрутизатор может специально исключить локальные домены, сказав domains = ! +local_domains
, что предотвратит любую почту, адресованную домену, указанному в local_domains
не перенаправляться удаленно через SMTP.
Чтобы устранить вашу проблему, я бы посмотрел в двух местах. Во-первых, хотя у вас может быть /etc/mailname
заселен, это не означает, что @
значение в конфигурации exim расширяется до правильного имени локального домена. Убедитесь, что у вас есть правильный fqdn, указанный в /etc/hosts
и это dnsdomainname
(Я думаю, что он существует в Debian) возвращает то, что вы ожидаете.
Во-вторых, я бы дважды перепроверил конфигурацию exim, проследив за всеми маршрутизаторами до транспортов и убедившись, что ничего не пропало.
У меня была точно такая же проблема, что и у OP - я пытался понять, почему exim обрабатывал все локальные доставки (т.е. сообщения, сгенерированные cron, например, предназначенные для локального почтового ящика, или вывод 'echo "test" | mail' ) как нелокальный.
Типичные записи журнала из такой команды, как:
echo "test" | mail userfoo
будет выглядеть так:
2013-03-20 12:44:02 1UIIN7-0004t9-8R <= root@example.com H = localhost (hostname.example.com) [127.0.0.1] P = esmtps X = TLSv1: DHE-RSA-AES256- SHA: 256 S = 811 id=201303201244.r2KCi11V018784@hostname.example.com
когда они должны выглядеть просто так:
2013-03-20 17:49:17 1UIN8X-0005iz-4Y <= root@example.com U=root P=local S=323
В моем случае проблема заключалась в том, как была настроена моя почтовая оболочка - в моей ОС - FreeBSD - вы настраиваете почтовую оболочку в /etc/mail/mailer.conf, а я пренебрегал изменением различных псевдонимов в этом файле. использовать Exim вместо двоичного файла sendmail по умолчанию. В результате, я думаю, выдача почтовых команд в командной строке означала, что двоичный файл sendmail использовался вместо exim, что привело к попытке доставки через ESMTP, а не через локальную конвейерную доставку.
Изменение файла конфигурации почтовой оболочки /etc/mailer.conf с:
sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
hoststat /usr/libexec/sendmail/sendmail
purgestat /usr/libexec/sendmail/sendmail
кому:
sendmail /usr/local/sbin/exim
send-mail /usr/local/sbin/exim
mailq /usr/local/sbin/exim -bp
newaliases /usr/bin/true
имел желаемый эффект замены sendmail в качестве двоичного файла почтовой программы по умолчанию для локальной доставки. На самом деле это небольшая ошибка школьника, я помню, что это было одной из первых вещей, которые я изменил, когда впервые установил Exim 5-10 лет назад на FreeBSD, но с тех пор у меня не было необходимости возиться с этим!
Надеюсь, это кому-то все равно поможет, это был единственный результат, который точно касался моей проблемы.
Ура.
Ссылки: