Я хочу создать глобальный псевдоним для всех моих доменов, чтобы получать всю почту на такие адреса, как postmaster@
Я добавил эти строки в aliases.pcre
:
/(MAILER-DAEMON|postmaster|abuse|webmaster)@(.*)$/ me@mydomain
И в main.cf
virtual_alias_maps = pcre:/etc/postfix/aliases.pcre
но он также перехватывает почту на внешние домены, т.е. перенаправляет мне письма, отправленные на postmaster@external.com
Могу ли я перенаправить всю почту, отправленную на эти адреса, но только если домен находится в virtual_mailbox_domains
? (без записи доменных имен в aliases.pcre
* Обновить *
пользователи, домены, псевдонимы ... хранятся в базе данных, для управления которой используется postfixadmin.
Таблицы псевдонимов выглядят так:
mysql> describe alias;
+----------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------------------+-------+
| address | varchar(255) | NO | PRI | NULL | |
| goto | text | NO | | NULL | |
| domain | varchar(255) | NO | MUL | NULL | |
| created | datetime | NO | | 0000-00-00 00:00:00 | |
| modified | datetime | NO | | 0000-00-00 00:00:00 | |
| active | tinyint(1) | NO | | 1 | |
+----------+--------------+------+-----+---------------------+-------+
в идеале он должен уважать псевдоним из базы данных, если он установлен, и перенаправлять почту только для адресов без псевдонима
В качестве альтернативы, вместо длинного запроса, как предложено выше, вы можете разделить на две карты sql
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf, mysql:/etc/postfix/my-custom-query.cf
Оба файла имеют одинаковый параметр, кроме запроса. Для /etc/postfix/mysql-virtual-aliases.cf
, вы можете использовать запрос по умолчанию от postfixadmin
SELECT goto FROM alias WHERE address = '%s'
И для my-custom-query.cf
у вас есть запрос
select 'me@example.com' AS goto from domain where domain='%d' AND '%u' REGEXP '^(MAILER-DAEMON|postmaster|abuse|webmaster)$' LIMIT 1;
Как это устроено
Если ваши первые карты mysql-virtual-aliases.cf
возвращается ноль, то postfix попытается запросить вторую карту my-custom-query.cf
.
Плюсы:
mysql-virtual-aliases.cf
, то вы просто выполняете один простой запрос.Минусы:
mysql-virtual-aliases.cf
, ты должен бежать дополнительный второй запрос.Наконец то, что я настроил
в /etc/postfix/mysql-virtual-aliases.cf
:
hosts = localhost
user = postfix
password = mypass
dbname = postfix
query = SELECT goto FROM alias WHERE address = '%s'
в /etc/postfix/mysql-virtual-aliases-postmaster.cf
:
hosts = localhost
user = postfix
password = mypass
dbname = postfix
query = SELECT 'me@mydomain' AS goto FROM domain WHERE
domain='%d' AND active = '1' AND
'%u' REGEXP '^(MAILER-DAEMON|postmaster|abuse|webmaster)$' LIMIT 1
И в main.cf
:
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf,
mysql:/etc/postfix/mysql-virtual-aliases-postmaster.cf
Может кто знает более простой / действенный способ?