Postfix电子邮件服务器,使用MySQL为mynetworks

我有我自己的服务器,与邮件服务器的后缀。 我的客户也必须能够使用这个邮件服务器。 他们使用C#编写的软件来发送电子邮件,但自从我上次升级以来,smtp身份validation无法正常工作,因此我必须使用main.cf中的myNetwork设置。对于dynamic分配的IP地址或在家工作的客户的员工,这就给我一个问题:每次邮件被邮件服务器拒绝时,我都必须手动调整main.cf。

我已经使用MySQL的用户和域名,所以configuration应该是确定的:

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 

发送电子邮件时出现以下错误: 临时查找失败

当然,我已经广泛search,但通常的编码嫌疑人已经尝试,并没有结果。

如果有人能给我的解决scheme的指针,我会非常gratefull。

但自从我上次升级以来,smtp身份validation无法正常工作

你需要解决这个问题。

mynetworks并不意味着在你的邮件服务器系统上授予外人免费的权限; 您应该在99%的时间内将其限制在本地主机上。

我认为这是一个坏主意。 然而,如果你打算尝试它,你需要一些方法来存储IP和networking掩码在你的表中,并查询范围。 这将是一种复杂的正则expression式,所以我会采取快捷方式,并创build一个表,看起来像这样,通过将每个范围的第一个和最后一个IP转换为一个整数。 在这个例子中是10.188.17.0/24

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

然后,我会创build一个查询,以确定IP是在第一个和最后一个,并返回行动或任何Postfix想要的地方。 我不确定这是否有效,但似乎是可行的。

这就是说,它似乎更简单,更可靠,并不需要不断更新您的数据库来解决任何错误的SMTPauthentication。