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

Виртуальные домены Postfix: как принять все поддомены, кроме двух?

Предполагая, что мой сервер Postfix обслуживает домен example.com, Я хочу, чтобы он принимал почту для всех поддоменов example.com, кроме mail.example.com и in.example.com.

Сначала я пробовал использовать регулярное выражение, исключающее эти два поддомена:

(?(?!mail|in).+\.example.com)

Но это не сработало. Я не был уверен, связана ли проблема с регулярным выражением или механизм регулярных выражений Postfix не поддерживает условные выражения, поэтому я решил попробовать использовать условные выражения для файла таблицы. На данный момент моя таблица выглядела так:

/ etc / postfix / virtual_domains:

if !/(in|mail)\.example\.com/
/.+\.example\.com/ OK
endif

/etc/postfix/main.cf:

virtual_alias_domains = regexp:/etc/postfix/virtual_domains

Но и это не сработало. Что я делаю не так?

Измените это в main.cf:

virtual_alias_domains = !/etc/postfix/not_these_domains.txt regexp:/etc/postfix/virtual_domains

/etc/postfix/not_these_domains.txt:

in.example.com  mail.example.com

И хранить /etc/postfix/virtual_domains просто:

/.+@.+\.example\.com/    OK

Но обратите внимание: Это работает только для Postfix> 2.4

Если ваш Postfix построен с поддержкой PCRE, попробуйте использовать отрицательный ретроспективный анализ:

(?<!(mail|in)).+\.example\.com