У меня есть собственный сервер с постфиксом в качестве почтового сервера. Мои клиенты также должны иметь возможность использовать этот почтовый сервер. Они используют программное обеспечение, написанное на 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.