PostFix 黑名單配置

PostFix 黑名單配置

我已經使用 PostFix 和 Dovecot/IMAP 設定了一個基本的電子郵件伺服器。但我在黑名單設定方面遇到了一些問題。

下面是我的字尾 main.cf

smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/blacklist.cf reject_unauth_destination

黑名單.cf

user = mailuser
password = mailuser2011
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 'REJECT' FROM blacklist WHERE email='%s' AND id=( SELECT id FROM virtual_users WHERE email='%u')

我的 SQL 表有 2 個欄位用於黑名單。即id,其中emailid 是個人用戶,電子郵件是列入黑名單的地址。

我想要做的是從資料庫中檢索郵件中收件人的地址匹配項。如果我將電子郵件值硬編碼為資料庫中現有的內容,它將能夠拒絕來自被封鎖使用者的郵件。

但是,如果我使用%u(我假設它指的是收件人),它根本無法阻止。

答案1

Postfix 中的查找表是鍵值查找。這意味著您有一個鍵並在查找後獲得一個值。在您的情況下(check_sender_access),關鍵是寄件者;並且只有寄件者。因此,Postfix 無法滿足您擁有兩個金鑰(發送者和接收者)的要求。

解決這個問題的唯一方法是政策授權,您有多個按鍵(寄件者、收件者、IP、主機名稱、helo...)來進行查找。

但另一方面,依賴寄件者地址是一個非常糟糕的主意,因為這是最容易偽造的。

相關內容