Я хочу настроить сервер 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.com
MX - но исключение (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.