LINUX.ORG.RU
ФорумAdmin

Postfix + виртуальные алиасы = лишние запросы к БД


0

1

Есть Postfix под Debian. В нём настроен приём почты для определённого домена на виртуальные алиасы через virtual_alias_maps + таблица в MySQL для их хранения.
Сегодня заглянул в лог запросов MySQL сервера и увидел, что Postfix шлёт далеко не один запрос к таблице, с целью проверить алиас на существование и получить список адресов для пересылки, а сразу несколько. Если пришло валидное письмо, то он зачем-то проверяет по таблице алиасов ещё и адрес/домен отправителя:

214 Query     SELECT `destination` FROM `aliases` WHERE CONCAT(`username`,'@',`domain`)='nobody@mail.ru'
214 Query     SELECT `destination` FROM `aliases` WHERE CONCAT(`username`,'@',`domain`)='@mail.ru'
212 Query     SELECT `destination` FROM `aliases` WHERE CONCAT(`username`,'@',`domain`)='mail.ru'
В целях экономии хотелось бы это отключить.
Из существенных настроек вот разве что это есть:
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Полистал Postfix Address Verification HOWTO, ничего подходящего не нашёл.

> В целях экономии

Настоящий программист всегда делает ассемблерную вставку, чтобы сэкономить два такта внутри очень короткого цикла? :-)

Nastishka ★★★★★
()

Это нормальный документированный режим работы, он описан тут: http://www.postfix.org/access.5.html

Как это отключить я точно не знаю, возможно что и никак. Если у тебя сервер с большой нагрузкой, то юзай кэширование SQL-запросов, или что-то подобное. Либо правь исходники постфикса, хотя возможно и есть какой-то параметр в конфиге...

blind_oracle ★★★★★
()
Ответ на: комментарий от zgen
myhostname = xxx.xxx.ru
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = xxx.xxx.ru, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = /etc/postfix/virtual_domains
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
virtual_mailbox_base = /var/mail
virtual_mailbox_limit = 0
virtual_minimum_uid = 8
virtual_uid_maps = static:8
virtual_gid_maps = static:8
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_path = smtpd
broken_sasl_auth_clients = yes

В mysql-virtual_alias_maps.cf запрос типа

query = SELECT `destination` FROM `aliases` WHERE CONCAT(`username`,'@',`domain`)='%s'

frozen_twilight ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.