在 main.cf 中

在 main.cf 中

我尝试过的最接近的做法是添加reject_unlisted_sender到 main.conf,但这也会禁用接收任何发送到该邮箱的电子邮件。我只想拒绝发送但仍允许接收。

编辑

以下是后指输出

如果这真的不是你想要的@UsersUser,那么请求命令的输出

答案1

正如@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”。(见postfix 文档

我正在管理一个显然使用 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,与 postfix 无关。这里的重要字段实际上是源、访问、类型和活动。这些字段位于/etc/posftix/mysql-virtual_sender.cf我们指示 postfix 使用的配置文件中check_sender_access

相关内容