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

Почтовый сервер Postfix, использующий mysql для mynetworks

У меня есть собственный сервер с постфиксом в качестве почтового сервера. Мои клиенты также должны иметь возможность использовать этот почтовый сервер. Они используют программное обеспечение, написанное на C # для отправки электронных писем, но с момента моего последнего обновления проверка подлинности smtp не работает должным образом, поэтому я должен использовать параметр myNetwork в main.cf Для динамически назначаемых IP-адресов или сотрудников моих клиентов, работающих из дома, это создает проблему, заключающуюся в том, что мне приходится вручную настраивать main.cf каждый раз, когда письмо отклоняется почтовым сервером.

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

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix
/mysql-email2email.cf

Но если я использую:

mynetworks = mysql:/etc/postfix/mysql-mynetworks.cf

который содержит:

user = MailUserName
password = MailUserPassWord
hosts = 127.0.0.1
dbname = MailDatabase
query = Select IPNummer from MyNetworks where IPNummer = '%s'
expansion_limit = 100

При отправке электронного письма я получаю следующую ошибку: Временная ошибка поиска

Конечно, я много гуглил, но обычные подозреваемые, такие как кодировка, были опробованы и не дали результата.

Если кто-нибудь может дать указатель на решение, я был бы очень признателен.

но с момента моего последнего обновления SMTP-аутентификация не работает должным образом

Вам нужно это исправить.

mynetworks не предназначена для предоставления посторонним возможности свободно управлять вашей системой почтового сервера; вам следует ограничить его локальным хостом в 99% случаев.

Думаю, это плохая идея. Однако, если вы собирались попробовать это, вам понадобится способ хранить IP-адреса и маски сети в вашей таблице и запрашивать диапазоны. Это было бы сложно с регулярным выражением и прочим, поэтому я бы воспользовался ярлыком и создал бы таблицу, которая выглядит так, преобразовав первый и последний IP в каждом диапазоне в целое число. В этом примере 10.188.17.0/24

|first_ip |last_ip  |action|
|180097280|180097535|OK |

Затем я бы создал запрос, чтобы определить, был ли IP между первым и последним, и вернуть действие или там, где Postfix хочет. Я не уверен, что это действительно работает, но это возможно.

Тем не менее, это кажется намного проще, надежнее и не требует постоянных обновлений вашей базы данных, чтобы исправить то, что пошло не так с smtp auth.