Отправка писем через exim4 на домен, равный hostname, если mx запись указывает на другой хост

Есть сайт на VDS, на него указывает домен example.ru

$ hostname
example.ru
$ host example.ru
example.ru has address 92.243.84.xx
example.ru mail is handled by 10 mx1.example.ru.
$ host mx1.example.ru
mx1.example.ru has address 62.165.37.xx

Стоит почтовик exim4. При отправке писем с сайта (php mail()) на этот домен, письма не доходят.

$ php -r "var_dump(mail('user@example.ru', 'text mail', 'test'));"
bool(true)
$ sudo grep user@example.ru /var/log/exim4/mainlog
2010-09-16 13:23:42 1Ow8on-0005Sb-Cu ** user@example.ru: Unrouteable address

При конфигурировании exim4 кроме прочего пишет:

$ sudo dpkg-reconfigure exim4-config
Please enter a semicolon-separated list of recipient domains for which this machine
should consider itself the final destination. These domains are commonly called 'local
domains'. The local hostname (example.ru) and 'localhost' are always added to the list
given here.

В общем проблема как раз в этом, как сделать так, чтобы the local hostname больше не участвовал в спике локальных доменов для отправки почты?

Предыстория: До этого стоял обычный sendmail, была та же проблема. Нагуглил много примерно одинаковых решений. Вот одно из: forum.lissyara.su/viewtopic.php?f=20&t=21720 Пытался прогнуть sendmail, ничего не получилось, плюнул, поставил exim4, как и человек по ссылке, но проблему не решило.
  • Вопрос задан
  • 11469 просмотров
Решения вопроса 1
charon
@charon
откройте конфиг экзима и посмотрите на параметр local domains (об этом, кстати, и текст ошибки говорит). Письма на домены из этого списка будут считаться обслуживаемыми эти сервером. Все остальные — чужие и будут пересылаться дальше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
antonio1107
@antonio1107
Заместитель руководителя
Если в /etc/exim4/update-exim4.conf.conf параметр dc_eximconfig_configtype='smarthost' или dc_eximconfig_configtype='satellite'
То в файле /etc/exim4/exim4.conf.template есть такая настройка:
smarthost:
debug_print = "R: smarthost for $local_part@$domain"
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_smarthost
route_list = * DCsmarthost byname
host_find_failed = ignore
same_domain_copy_routing = yes
no_more
Это значит, что принимать почту для example.com будет сам сервер. И не будет для домена отсылать на внешний. Например, если почта для домена на yandex'е. Чтобы вся исходила исправьте на
domains = local_domains : !local_domains
Ответ написан
Комментировать
vit1251
@vit1251
Software Engineer
Если вы работаете на examle.com, то просто пропишите его в локальные домены и почта будет доставляться к вам в ящики.

Попробуйте настроить нормально MX записи.
Ответ написан
homm
@homm Автор вопроса
В файле /etc/exim4/exim4.conf.template я нашел следующую строку:
domainlist local_domains = MAIN_LOCAL_DOMAINS

Закомментировал и добавил:
domainlist local_domains = localhost


После этого в логах пишется:
2010-09-16 14:24:39 1Ow9ll-00065A-Ce ** user@example.ru R=dnslookup T=remote_smtp: SMTP error from remote mail server after MAIL FROM:<admin@example.ru> SIZE=1361: host mx1.example.ru [62.165.37.xx]: 550 <admin@example.ru>, Sender unknown

Что бы это значило? Как я понимаю, это уже почтовик на сервер mx1 отказывается принимать письмо на том основании, что письмо отправлено от пользователя с домена example.ru, а почтой с этого домена рулит он сам и думает, что его хотят обмануть? Или тут что-то другое?
Ответ написан
vit1251
@vit1251
Software Engineer
Проставь вот такие штуки:

domainlist local_domains = localhost: example.com: example.org: example.xxx

Должно получиться что почта не посылается через SMTP транспорт, а кладется в почтовые ящики.

P.S. Если все совсем плохо готов за небольшую деньгу помочь с EXIM. Есть рекомендации и готовые prodaction почтовые сервера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы