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

постфикс smtp_generic_maps с регулярным выражением

Я только начал играть с переписыванием адреса отправителя с постфиксом. Я запускаю сервер с 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 вызовет объяснение.