Доооолго думал, как назвать статью. В итоге всё-равно получилась хрень. Ну да ладно, в следующем абзаце, думаю, ситуация прояснится.
Типичная ситуация. Приходит человек к админу и говорит: «Слушай, у меня тут сайтик есть на виртуалке, я хочу с него письма о регистрации отправлять». Админ слушает это внимательно и радостно настраивает smtp-отправку с сайта. Я делаю так — https://debian.pro/276 , например. Человека переспрашивают «а ты точно не будешь письма принимать на этом домене?». «Да не, нафиг оно мне…»
Конструкция существует год, второй. Админ, который это настраивал в запое. Человеку с виртуалкой срочно и внезапно хочется заиметь ящик admin@hissite.tld. Он находит другого сисадмина, объясняет ситуацию, говорит, что хочет пользоваться ящиком через гугл/яндекс/web outlook/whatever. А вот тут начинается веселое. Админов ищут подешевле. Соответственно, всю ситуацию целиком видят далеко не все. Каюсь, из-за неопытности сам на такие грабли несколько раз наступал. Админ берет и настраивает почту на гугле. Прописывает MX-записи. Радуется, забирает денежки, уходит в запой.
Человек радостно пользуется своим ящиком ровно до того момента, пока не понимает, что письма с ящика robot@hissite.tld до его admin@ не доходят. А всё просто — локальный smtp-сервер на его виртуалочке (который и шлет роботные письма) считает, что он в полном ответе за домен hissite.tld и плевать ему на то, что написано в MX записях.
Находит человек третьего админа… А вот тут частенько начинается фееричное. Я видел разные подпорки вокруг своих лаконичных мануалов для обработки этой ситуации. Описывать их совсем не хочется. Лучше сразу напишу, как правильно делать с exim4.
Большая часть решений, к счастью, сводилась к использованию и написанию различных почтовых роутеров для exim’a. Разной степени удачности, разной степени быстродействия. Но мало кто догадался почитать доки хотя бы до середины и увидеть описание роутера hubbed_hosts. Суть его примерно в том, что он позволяет вручную определять, куда перенаправлять почту для определенных доменов, если она придет.
Собственно, robot@ отправляет письмо в admin@hisdomain.tld, письмо не улетает наружу (так как домен в exim4 прописан локальным). Но перед тем, как попасть в локальный ящик, письмо проходит через роутер hubbed_hosts. В котором мы напишем, чтобы письмо всё же ушло на правильный сервер.
Создадим файл, в котором будем описывать всё это:
И напишем в него конфигурацию:
# Для доменов в ПДД Яндекса:
vlad.pro: mx.yandex.ru
# Для доменов в Google Apps:
domain1.tld: ASPMX.L.GOOGLE.COM:ALT1.ASPMX.L.GOOGLE.COM:ALT2.ASPMX.L.GOOGLE.COM:ASPMX2.GOOGLEMAIL.COM:ASPMX3.GOOGLEMAIL.COM:ASPMX4.GOOGLEMAIL.COM:ASPMX5.GOOGLEMAIL.COM
# Для доменов в Office 360:
domain2.tld: domain2-tld.mail.eo.outlook.com.
Комментировать тут особенно нечего. Пачка доменных имен через двоеточие, первое из которых — сам домен, который будет обрабатываться как hubbed, дальше через двоеточия все его MX-хосты в порядке приоритета по убыванию.
Помимо прочего, такую конструкцию можно использовать для организации второго почтового сервера, который будет копить у себя почту во время «отсутствия» основного. И, соответственно, выплевывать её на основной, когда он вернется в сеть. При том такая конструкция будет кушать значительно меньше ресурсов, чем полноценный почтовый сервер. Может быть, для почты это и не очень актуально (почтовые серверы очень редко дропают письмо после первой попытки отправки), но лишним бывает редко.
Можно её использовать и для ручной маршрутизации почты внутри своей сети (например для случая, когда между серверами есть локальный канал, который не будет использоваться, если почту между ними пулять в MX).
Спасибо очень помогло :)
Та не за чт.
Наконец-то нормальное решение …
а то лично я задолбался уже редиректить через внешний ящик
Welcome)
А как сделать то же самое с Postfix?
http://lmgtfy.com/?q=postfix+hubbed+hosts
http://serverfault.com/questions/280585/how-do-i-configure-postfix-to-deliver-mail-for-specified-domains-to-another-host
Что указывать вместо domain1.com и mail.example.com?
У меня один домен.
domain1.com — домен, почту которого нужно форвардить.
mail.example.com — smtp-сервер, на который пересылать почту.
В случае с Google Apps это ASPMX.L.GOOGLE.COM?
Да.
К сожалению, так ничего и не выходит.
постфикс то порестартили? В логах что?
Файл покажите, в который писали
Да, перезапускал, конечно.
Файл transport:
domain.ru smtp:[aspmx.l.google.com]
В логе:
Nov 10 15:43:26 test postfix/error[3471]: 819CC2A40CED: to=, relay=none, delay=0.24, delays=0.14/0/0/0.1, dsn=5.0.0, status=bounced (User unknown in virtual alias table)
А почему у вас to пустое?
в main.cf что добавили?
to вырезал парсер.
Разобрался. Оказалось, что в конфиге постфикса myhostname был указан как test.com.
Спасибо!
Не за чт)
Удачи
Спасибо. Очень помогло.
Не за что.
У меня не получилось.
В логе все равно пишет R=localuser_fwd_only T=devnull
Что не так?
В конфиги руками лезли, кроме хаббеда?
Нет, конфигурацию вообще не менял. А там нужно что-то дописать для хаббеда? Я думал с дефолтной конфигурацией будет работать.
Нашел такой файл: /etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts
Такое содержимое:
hubbed_hosts:
debug_print = «R: hubbed_hosts for $domain»
driver = manualroute
domains = «${if exists{CONFDIR/hubbed_hosts}\
{partial-lsearch;CONFDIR/hubbed_hosts}\
fail}»
same_domain_copy_routing = yes
route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
transport = remote_smtp
Хм. А ящик не в fqdn сервера, случаем?
Вообще я тут гадать не возьмусь, миллион причин может быть.
Лучше всего попробовать удалить пакеты exim с —purge, удалить /etc/exim4 и попробовать заново (если ничего ценного там не настраивали).
«Хм. А ящик не в fqdn сервера, случаем?» — не знаю даже как проверить…
На этом VPS установлена VestaCP и я боюсь удалять почтовик и опять его ставить, вдруг что-то отвалится….
Я создал тему на форуме панели. Если дадут рабочий ответ то отпишу здесь решение.
Оу. Ну так с панели и надо было начинать )
Она там что угодно могла устроить в конфигах — нужно пофайлово сравнивать оригинальный конфиг и панельный (ну и проверить, что exim из /etc/exim конфиг берет, если там вообще exim).
Спасибо за полезную инфу. День потратил в поисках решения с exim4, что самое интересное сам сервек выдавал MX-запись домена, а вот exim4 не видел её. Теперь работает.
Спасибо автору, помогло, благо гугл помог быстро найти.
По какому запросу нашлось-то, хоть?
Нашел по запросу «exim письмо себе на внешний mail» в гугле)
Подскажите пожалуйста, почему может не работать? Я создал hubbed_hosts рядом с exim4.conf.template, задал такого же владельца, вписал mydomain.com: emx.mail.ru, сделал service exim4 restart
Но при попытке отправить письмо с сайта все равно получаю от своего локального МТА ошибку: The following address(es) failed: Unknown user
Что я делаю не так?
grep -rni hubbed_hosts /etc/exim что говорит?
debian какой? exim какой?
exim 4.93, Ubuntu 20.04.1 LTS
grep -rni hubbed_hosts /etc/exim4
/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts:2:# router/150_exim4-config_hubbed_hosts
/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts:10:hubbed_hosts:
/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts:11: debug_print = «R: hubbed_hosts for $domain»
/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts:13: domains = «${if exists{CONFDIR/hubbed_hosts}\
/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts:14: {partial-lsearch;CONFDIR/hubbed_hosts}\
/etc/exim4/conf.d/router/150_exim4-config_hubbed_hosts:17: route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
> Ubuntu 20.04.1 LTS
Миллион причин может быть.
Проверяйте, что 25й порт — это действительно exim, попробуйте его порестартить и тыды.
Плюс в убунте оно может быть в принципе сломано, у них бывает.