Я только начал играть с переписыванием адреса отправителя с постфиксом. Я запускаю сервер с debian-7.11
и postfix-2.9.6
.
Содержание /etc/postfix/main.cf
:
[...]
smtp_generic_maps = hash:/etc/postfix/generic
[...]
Содержание /etc/postfix/generic
:
santiago@uranus.caoba.fr santiago.uranus.caoba.fr@caoba-mail.fr
auguste@uranus.caoba.fr auguste.uranus.caoba.fr@caoba-mail.fr
И пока это работает. Когда пользователь santiago
отправляет электронное письмо, оно отправляется как santiago.uranus.caoba.fr@caoba-mail.fr
чего я и хочу.
Моя проблема в том, что я хочу, чтобы эта перезапись выполнялась с любым пользователем без добавления дополнительных строк в /etc/postfix/generic
. Поэтому мне было интересно, можно ли это сделать с помощью какого-то регулярного выражения, например:
(.*)@$hostname $1.$hostname@caoba-mail.fr
Это вообще возможно?
Спасибо за вашу помощь
Сантьяго
В руководстве по постфиксу явно указано, когда интерполяция в regexp
или pcre
таблицы запрещены (в основном из-за убеждения авторов, что их использование небезопасно в этом контексте). Если соответствующее отображение не говорит, что это не так, по умолчанию доступна интерполяция.
Вы можете выполнять более сложные сопоставления с помощью поиска SQL, но пока ваши имена хостов фиксированы и только поддомены принадлежащих вам доменов, регулярного выражения будет вполне достаточно.
Установите подходящий модуль regexp для postfix
apt install postfix-pcre
Добавить новый /etc/postfix/generic.pcre
стол:
/([a-z]+)@([^.]+)\.caoba\.fr/ $1.$2.caoba.fr@caoba-mail.fr
Измените тип таблицы (это заменяет ваш существующий hash
отображение типов!):
postconf -e smtp_generic_maps=pcre:/etc/postfix/generic.pcre
Вы, вероятно, все еще хотите проверить, есть ли у вас append_dot_mydomain
включен (afaik, который раньше был включен по умолчанию). Debian устанавливает все соответствующие руководства, поэтому man 5 generic
вызовет объяснение.