Назад | Перейти на главную страницу

Принимать всю почту для домена (отовсюду), пересылать почту выбранным получателям на определенные адреса, передавать все остальное на определенный хост

Я хочу настроить сервер sendmail, который принимает почту от всех в определенный домен (скажем, example.com), затем для списка определенных получателей отправляет это письмо на указанные сторонние адреса и ретранслирует все остальное на определенный IP-адрес.

Я пробовал это:

[root@splitter mail]# cat relay-domains 
example.com
[root@splitter mail]# cat virtusertable
divert.test@example.com  new.recipient@example.co.uk

и пересылка большей части домена работает нормально - он доставляется на хост, указанный example.comMX - но исключение (divert.test@example.com) игнорируется

Я пробовал это:

[root@splitter mail]# cat local-host-names 
example.com
[root@splitter mail]# cat mailertable
example.com      esmtp:[1.2.3.4]
[root@splitter mail]# cat virtusertable
divert.test@example.com  new.recipient@example.co.uk

а затем сообщение об исключении правильно отделяется, но любой другой пользователь отбрасывается локально (User unknown). Я пробовал добавить это в virtusertable:

@example.com           %1@example.com

но (вероятно, неудивительно) это приводит к rewrite: excessive recursion (max 50), ruleset canonify ошибки.

Я бы предпочел решения на основе sendmail, потому что я могу быстро их попробовать. Если мне с этим не повезет, я открою это для других MTA. Если у кого-то есть идеи, как это сделать, я буду очень признателен.

Попробуем это:

# Assuming example.com is in $=w
LOCAL_RULE_0
Ruser1 < @ example.com. > $*    $@ newuser1 < @somewhere.com. > 
Ruser2 < @ example.com. > $*    $@ newuser2 < @somewhereelse.com. > 
R$* < @ example.com. > $*    $#esmtp $@ [1.2.3.4] $: $1 < @ example.com. > $2

Естественно, это плохо масштабируется, если вы хотите сделать его работоспособным для более чем 10 пользователей и вам нужно заставить его работать с картой, но я перестал быть почтмейстером с 5/2014, и я немного заржавел. Я могу заставить его работать с внешней картой, если хотите.

Как всегда помните, что в вашем sendmail.mc левая часть правила отделяется от правой табуляцией, а не пробелами, поэтому не копировать-вставить. Также не забудьте восстановить свой sendmail.cf потом и протестировать с помощью sendmail -bt:

> 3,0 user1@example.com

Если все работает как положено, перезапустите sendmail.