postfix 規則過濾:
標準響應代碼:
5xx 永久性錯誤
4xx 暫時性錯誤
2xx 正確
2. 常用過濾規則類型:
smtpd_client_restrictions#客戶端過濾
smtpd_helo_restrictions#helo指令過濾
smtpd_sender_restrictions#寄件人過濾
smtpd_recipient_restrictions #發件人過濾
smtpd_data_restrictions#內容過濾
smtpd_*_classes#自定義過濾
3.訪問表類型:
參數 表類型 :查找路徑表
check_client_access hash:/etc/postfix/maps/client_maps
check_helo_accesshash:/etc/postfix/maps/helo_maps
check_recipient_accesshash:/etc/postfix/maps/recipient_maps
check_sender_accesshash:/etc/postfix/maps/sender_maps
4.使用參數:
permit_mynetworks#批准mynetworks參數中的網段客戶端請求;
permit_auth_destination#批准destination參數中的域用戶請求;
reject_unauth_destination#拒絕不是destination參數中的域用戶請求
reject_invalid_hostname#拒絕客戶端在helo命令時提供的主機名爲無效主機名
reject_non_fqdn_hostname#拒絕客戶端在helo命令時提供的主機名稱不是RFC要求的完整形式
reject_non_fqdn_recipient#拒絕客戶端在RCPT TO命令時提供不完整的收件地址的網域部分
reject_non_fqdn_sender#拒絕客戶端在MAIL FROM命令時提供不完整的寄件地址的網域部分
reject_unknown_client#拒絕查不出PTR記錄的客戶端
reject_unknown_hostname#拒絕查不出A,MX記錄的主機名
reject_unknown_recipient_domain#拒絕查不出收件地址不是有效的A MX記錄
reject_unknown_sender_domain#拒絕查不出寄件地址不是有效的A MX記錄
5.通用限制條件:
permit #批准
reject #無條件拒絕
defer #婉拒請求
6.設定內容檢查參數:
check_sender_access#針對發件人過濾
check_recipient_access#針對收件人過濾
check_client_access#針對客戶端過濾
7.相關參數定義:
broken_sasl_auth_clients = yes 是否啓用客戶端sasl驗證
permit_mynetworks 允許本地網絡
permit_sasl_authenticated 允許sasl驗證通過的用戶
reject_invalid_hostname 拒絕主機名不合法的用戶
reject_non_fqdn_hostname 拒絕主機名不是fqdn格式的用戶
reject_unknown_sender_domain 拒絕無法識別的發件人域
reject_non_fqdn_sender 拒絕不是fqdn格式的發件人
reject_non_fqdn_recipient 拒絕沒有fqdn格式的發件人
reject_unknown_recipient_domain 拒絕無法識別的收件人域
reject_unauth_pipelining 拒絕無法驗證的管道
reject_unauth_destination 拒絕非本域的收件人
smtpd_sasl_auth_enable = yes 啓用sasl認證功能
smtpd_sasl_security_options = noanonymous 拒絕匿名用戶
smtpd_banner =顯示定義的信息
8. 實例:
smtpd_sender_login_maps = hash:/etc/postfix/maps/sender_login_maps
#防止僞造發件人
smtpd_restriction_classes = local_only,testall_only #定義兩個策略組
local_only =
check_recipient_access hash:/etc/postfix/maps/local_domains,reject,
check_sender_access hash:/etc/postfix/maps/local_domains,reject
#當用戶應用此組策略時,只允許收發包含在local_domains文件裏的用戶賬號或者域名(一般設置爲 公司域名)
testall_only = #用戶組權限控制
check_sender_access hash:/etc/postfix/maps/testall_sender,reject
smtpd_sender_restrictions = check_recipient_access hash:/etc/postfix/maps/testall_recipient
#1.當用戶應用此策略後,只允許testall_sender文件裏面的用戶進行發送某個郵箱賬號或者郵箱組
2.testall_recipient文件是用來定義某郵箱組或者某用戶啓用這個策略
例子:
需求:
創建一個公司所有人的組爲:testall,並只允許某些人可以對這個組進行發送郵件;
實行:
首先創建一個所有人組,文件爲testall,郵箱別名爲[email protected],在文件裏面添加所有人的 郵件賬號;
完成後,在testall_sender文件中添加允許對此組有發送權限的人員,
添加格式: 用戶郵箱全稱 OK (多人需要用逗號間隔區分)
啓用組策略:
在testall_recipient文件中添加以下內容:
格式: 郵箱組全名 策略組名
[email protected] testall_only
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/maps/local_sender,
check_recipient_access hash:/etc/postfix/maps/local_recipient,
permit_mynetworks,
permit_sasl_authenticated,
reject_sender_login_mismatch,
reject_authenticated_sender_login_mismatch
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unknown_sender_domain,
reject_invalid_hostname
#設置用戶無外發權限,只允許發公司內部郵箱
在local_sender文件中。添加以下內容:
格式: 用戶賬號 策略組名
[email protected] local_only
#設置用戶無外收權限,只允許收公司內部郵箱
在local_recipient文件中。添加以下內容:
格式: 用戶賬號 策略組名
[email protected] local_only
#####################################################################
masquerade_domains = $mydomain
masquerade_exceptions = root
hash_queue_depth = 2
double_bounce_sender = postmaster
ipc_timeout = 360s
hash_queue_names = deferred, defer
maximal_queue_lifetime = 500s
bounce_queue_lifetime = 500s
mynetworks_style = subnet
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks =
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
empty_address_recipient = postmaster
show_user_unknown_table_name = no