ychaouche Asked: 2015-08-06 01:24:48 +0800 CST2015-08-06 01:24:48 +0800 CST 2015-08-06 01:24:48 +0800 CST 在 postfix 中,如何拒绝特定电子邮件地址发送电子邮件但仍允许接收? 772 我尝试过的最接近的方法是添加reject_unlisted_sender到 main.conf ,但这也会禁止接收任何电子邮件到该邮箱。我只想拒绝发送但仍然允许接收。 编辑 这是 postfinger 的输出。 如果这真的不是你想要的@UsersUser,这里是请求命令的输出 email 1 个回答 Voted Best Answer ychaouche 2015-08-07T01:14:55+08:002015-08-07T01:14:55+08:00 正如@masegaloeh 所建议的,这就是我所做的: 在 main.cf 中 smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf check_sender_access这告诉 postfix在发送邮件之前对每个发件人执行限制。mysql:/etc/postfix/mysql-virtual_sender.cf包含执行检查所需的 SQL 查询。如果查询结果是,"REJECT"则 postfix 将拒绝从该发件人发送邮件。所以我们想要的是创建一个数据库,添加一个访问表,并且对于我们想要禁止的每个发件人,我们将插入一个带有“REJECT”值的行。为了解除禁令,我们将该值更新为“PERMIT”。另一个可能的值是“DEFER”。(见后缀文档) 我正在管理一个显然是使用 ISPConfig 配置的服务器,所以我已经找到了一个数据库、表和配置文件。我刚刚插入了一个新行。 在 /etc/postfix/mysql-virtual_sender.cf root@messagerie-test[10.10.10.26]/home/serveur # cat /etc/postfix/mysql-virtual_sender.cf user = ispconfig password = xxx dbname = dbispconfig table = mail_access select_field = access where_field = source additional_conditions = and type = 'sender' and active = 'y' and server_id = 1 hosts = 127.0.0.1 root@messagerie-test[10.10.10.26]/home/serveur # 这为 postfix 提供了执行查询所需的信息。数据库是dbispconfig,要查询的表是mail_access,要查询的字段是保存"REJECT"值的字段"access".Postfix 将提供发件人的电子邮件,并将与"source"字段(WHERE子句)进行匹配。 在dbispconfig.mail_access表格中,这是我添加的内容 mysql> INSERT INTO mail_access (sys_userid,sys_groupid,sys_perm_user,sys_perm_group,server_id,source,access,type,active) VALUES (1,2,'ruid','ruid',1,'[email protected]','REJECT','sender','y'); Query OK, 1 row affected (0.04 sec) mysql> select * from mail_access; +-----------+------------+-------------+---------------+----------------+----------------+-----------+---------------------------+--------+--------+--------+ | access_id | sys_userid | sys_groupid | sys_perm_user | sys_perm_group | sys_perm_other | server_id | source | access | type | active | +-----------+------------+-------------+---------------+----------------+----------------+-----------+---------------------------+--------+--------+--------+ | 1 | 1 | 2 | ruid | ruid | | 1 | [email protected] | REJECT | sender | y | +-----------+------------+-------------+---------------+----------------+----------------+-----------+---------------------------+--------+--------+--------+ 1 row in set (0.00 sec) mysql> 其他字段(除了访问权限)的值是从其他表中借来的,它们特定于 ISPConfig,与后缀无关。这里的重要字段实际上是源、访问、类型和活动。这些字段在/etc/posftix/mysql-virtual_sender.cf我们指示 postfix 与check_sender_access.
正如@masegaloeh 所建议的,这就是我所做的:
在 main.cf 中
check_sender_access
这告诉 postfix在发送邮件之前对每个发件人执行限制。mysql:/etc/postfix/mysql-virtual_sender.cf
包含执行检查所需的 SQL 查询。如果查询结果是,"REJECT"
则 postfix 将拒绝从该发件人发送邮件。所以我们想要的是创建一个数据库,添加一个访问表,并且对于我们想要禁止的每个发件人,我们将插入一个带有“REJECT”值的行。为了解除禁令,我们将该值更新为“PERMIT”。另一个可能的值是“DEFER”。(见后缀文档)我正在管理一个显然是使用 ISPConfig 配置的服务器,所以我已经找到了一个数据库、表和配置文件。我刚刚插入了一个新行。
在 /etc/postfix/mysql-virtual_sender.cf
这为 postfix 提供了执行查询所需的信息。数据库是
dbispconfig
,要查询的表是mail_access
,要查询的字段是保存"REJECT"
值的字段"access".
Postfix 将提供发件人的电子邮件,并将与"source"
字段(WHERE
子句)进行匹配。在
dbispconfig.mail_access
表格中,这是我添加的内容其他字段(除了访问权限)的值是从其他表中借来的,它们特定于 ISPConfig,与后缀无关。这里的重要字段实际上是源、访问、类型和活动。这些字段在
/etc/posftix/mysql-virtual_sender.cf
我们指示 postfix 与check_sender_access
.