Пересылка электронной почты linux MTA с помощью БД

Мне нужно настроить службу, которая будет получать по электронной почте такой запрос $uniqueID@domain.com, который uniqueID в базе данных MySQL для адреса электронной почты, а затем пересылать входящую электронную почту на адрес электронной почты (который будет внешним по отношению к серверу).

Я хочу сделать это только с MTA, не используя в миксе ничего похожего на dovecot, так как не будет никаких требований IMAP или POP3. Кто-нибудь может дать приблизительное руководство, как бы я поступил с exim или postfix?

2 ответа

Решение

С exim Вы можете использовать маршрутизатор следующим образом:

db_fwd:
    driver = redirect
    data   = ${lookup mysql{SELECT `destination` \
                            FROM   `forwarding` \
                            WHERE  `uniqueID`='${quote_mysql:$local_part}'}}
    allow_fail
    allow_defer

Таблица forwarding содержит такие строки:

ID  uniqueID      destination
1   awer0zsg9fg   user@domain.tld

Для всех, кто ищет, это было проще, чем я ожидал с postfix: сначала проверьте поддержку mysql с помощью: postconf -m

Затем: отредактируйте файл main.cf с соответствующими значениями по умолчанию (установите myhostname, mydomain, проверка mydestination inet_interfaces не привязана только к localhost), затем добавьте следующее в конец main.cf:

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf

Содержимое mysql-forwards.cf должно быть примерно таким:

user = dbuser
password = dbpassword
dbname = database
query = SELECT column AS destination FROM some_table WHERE id='%s'
hosts = mysql-host-name-or-ip
Другие вопросы по тегам