Пересылка электронной почты 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