iredmail 1.6.3 設定白名單

幫朋友安裝開源好用的mail server 「iredmail」,若需要加白名單,有兩個方法:

  1. 購買專業版
  2. 下指令
    https://docs.iredmail.org/amavisd.wblist.html
# python wblist_admin.py --list --whitelist
# python wblist_admin.py --list --blacklist
# python wblist_admin.py --add --whitelist 202.96.134.133 john@example.com @test.com @.abc.com
# python wblist_admin.py --add --blacklist 202.96.134.133 john@example.com @test.com @.abc.co

先找出 wblist_admin 在哪個地方,然後加上白名單即可

很困擾的httpd反向代理與容器(container)之間的問題

httpd 反向代理很好用, 一個ip就能搞定無數個網站, 某種角度來看, 也兼具資安效果, 可以阻擋使用ip進行網站攻擊的效果.

可是很困擾的是, 當我每三個月需要 renew 免費的 let’s encrypt 證書, 證書是renew成功了, 但是該檔案對應到容器的服務,有些並不會跟著改用新的證書, 就出問題了.

以mail server為例子, postfix與dovecot服務, 都會咬住舊版的證書, 而不使用新的, 重開mail server又要公告, 只能半夜偷偷重開, 真是困擾阿

升級mail server不支援TLS 1.0 , 1.1的問題

postfix 出現以下錯誤

SSL routines:tls_early_post_process_client_hello:unsupported protocol

我不知道如何處理, 爬文說要改成向下相容… 我才不要勒

vi /etc/crypto-policies/back-ends/opensslcnf.config
#改成
#MinProtocol = TLSv1.2
MinProtocol = TLSv1
MaxProtocol = TLSv1.3

vi /etc/postfix
#確認沒有被限制
# Disable SSLv2, SSLv3, TLSv1, TLSv1.1
#smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
#smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

自製郵件伺服器啟動腳本

我用自製的docker版郵件伺服器已經一陣子了, 每次要組合出腳本很麻煩, 我又不喜歡用yaml文件, 因此利用github的免費pages, 自己寫了一個簡易自動產生腳本的網頁, 還滿方便的, 頁面難看就請多包涵.

https://williamfromtw.github.io/docker-Postfix-AD/genLaunchCommand.html

podman 安裝自製mail server全紀錄

自製mail server只在docker使用過, 這次挑戰podman

  • 安裝let’s encrypt
dnf install certbot
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
systemctl stop httpd
certbot certonly --standalone --preferred-challenges http -d  mail.test.com

# 若要renew 請加到crontab
certbot renew --post-hook "systemctl restart httpd"
  • 搜尋容器
podman search inmethod
pod man pull docker.io/inmethod/docker-postfix-ad:3.3
  • 建立volume
podman volume create postfixldap_vmail    
podman volume create postfixldap_postfix    
podman volume create postfixldap_dovecot    
podman volume create postfixldap_log    
podman volume create postfixldap_rspamd_conf    
podman volume create postfixldap_rspamd_var    
podman volume create postfixldap_opendkim     
  • 啟用mail server容器

假設我們的AD主機IP : 10.192.130.227
郵件網域 : test.com
郵件主機 : mail.test.com
Ldap SEARCH_BASE : OU=group,DC=test,DC=com
BIND_DN : “cn=ldap,cn=Users,dc=test, dc=com”
BIND_PW: “password”
時區 : “America/New_York” (台灣Asia/Taipei)

我寫了一個自動產生腳本的scripts
https://williamfromtw.github.io/docker-Postfix-AD/genLaunchCommand.html
可以產生以下指令

podman run --name mailserver \
 -v /etc/letsencrypt:/etc/letsencrypt \
 -v mailserver_vmail:/home/vmail \
 -v mailserver_opendkim:/etc/opendkim \
 -v mailserver_postfix:/etc/postfix \
 -v mailserver_dovecot:/etc/dovecot \
 -v mailserver_rspamd_conf:/etc/rspamd\
 -v mailserver_rspamd_var:/var/lib/rspamd  \
 -v mailserver_log:/var/log \
 -p 25:25 -p 110:110 -p 143:143 -p 465:465 -p 587:587  -p 993:993 -p 995:995 -p 4190:4190 -p 11334:11334 \
 -e DOMAIN_NAME="test.com" \
 -e HOST_NAME="mail.test.com" \
 -e HOST_IP="10.192.130.227" \
 -e SEARCH_BASE="DC=test,DC=com" \
 -e BIND_DN="CN=ldap,CN=Users,DC=test,DC=com" \
 -e BIND_PW="your BIND_DN password" \
 -e TZ="America/New_York" \
 -e ALIASES="OU=aliases,DC=test,DC=com" \
 -e ENABLE_QUOTA="false" \
 --label=disable -d  --restart always  --net=host \
 docker.io/inmethod/docker-postfix-ad:3.3

相關port防火牆要開,DNS mx要設定,dkmi key請參照https://github.com/WilliamFromTW/docker-Postfix-AD,就可以測試看看了。

國際擋廣告組織spamhaus 提供 DQS 服務

spamhaus 是國際組織, 旨在提供”郵件是否為垃圾郵件”的檢查服務, DQS(Data Query Service) 便是首推的新架構.

以postfix郵件伺服器為例子, 原本main.cf設定如下, 非常簡單

smtpd_recipient_restrictions =
 ...
 reject_rbl_client zen.spamhaus.org

但是近年來, spamhaus 已經不提供以上檢查服務.

spamhaus擋廣告改採用DQS方式, 而且建議不要用postfix強硬阻擋, 請整合 spamassassin 或是 rspamd 這種依分數多寡來判斷的架構比較有彈性.


以下紀錄 rspamd 啟用 DQS 設定方式:

  • 申請一個spamhaus帳號

https://www.spamhaus.com/free-trial/free-trial-for-data-query-service/
免費試用30天,功能多,體驗完居然無法轉成免費帳號, 要試用要有心理準備


https://www.spamhaus.com/free-trial/sign-up-for-a-free-data-query-service-account/
免費使用,似乎要每年renew一次


申請完畢, 請到此登入 , 可以找到 Query Key , 請記下來

  • 到github下載設定檔案, 並將裡面的Query Key改成自己申請的
git clone https://github.com/spamhaus/rspamd-dqs
cd rspamd-dqs
cd 3.x
# 請取代紅色部分(我們申請的Query Key)
sed -i -e 's/your_DQS_key/paxxxxxxxbji/g' *.conf rspamd.local.lua
# 若為付費帳號
cp *.conf /etc/rspamd/local.d
cp rspamd.local.lua /etc/rspamd
# 若為免費帳號
cp rbl.conf rbl_group.conf /etc/rspamd/local.d
# 檢查語法, 若成功, 重啟rspamd即可生效
rspamadm configtest

rspamd 啟用 DQS 詳細設定,可參考 https://github.com/spamhaus/rspamd-dqs


  • 若不想使用rspamd, spamhaus 貼心準備好各種設定, 幾乎都是複製貼上即可.

只要登入到網站,就可以點選Manual , 取得相關設定資料, 該資料直接套用登入者Query Key 呢.

微軟KB5018410更新後,outlook無法透過postfix server寄信

前幾天有同仁反映無法寄信, 錯誤訊息: none of the authentication methods supported by this client are supported by your server.

經過測試, 郵件伺服器使用我自製的 container docker-postfix-ad 2.4 , 這容器基本os為centos 7.9, postfix版本為 2.10.x , 會讓outlook出現沒有適合的加密通訊協定的錯誤.

爬完文發現postfix的master.cf(submission , smtpd) 可加上 -o tls_ssl_options=NO_TICKET 解決問題, 但偏偏postfix 2.11才有此功能, 更悲催的centos 6有2.11.x版本, centos 7只有2.10.x.

現主時,我只好將自製的郵件伺服器, os改成RockyLinux 8.6, postfix 為3.x版本,
好險3.x 與 2.x 差異性不多, 基本上舊main.cf檔案只要加上以下兩行,就能用了.

#backwards-compatible default setting
append_dot_mydomain = yes
compatibility_level = 2

ps. postfix 3.x的 master.cf也不用特別加上 -o tls_ssl_options=NO_TICKET

相關的更新Windows 11 KB5018418 / Windows Server 2019 KB5018419

2022/10/19

若無法寄信,請再安裝這兩天的 win10 KB5020435 , win11 KB5020387 ,就可以解決了

rspamd設定灰名單(greylist)

原本我建議大家不要用灰名單, 原因是:
1. 等很久,
2. 系統自動發信,無法通過灰名單測試, 但是該信件又是極其重要
因此建議停用灰名單功能.

但近年來廣告信,釣魚信多到影響資通安全, 我們就必須要開啟灰名單功能, 策略如下:

1.若是重要信件,先加入灰名單裡面的白名單,
2.若通過灰名單測試後, 可以設定成長時間不用再通過灰名單測試

以下是rspamd開啟灰名單功能

  • 修改 local.d/greylist.conf
enabled = true;
expire = 365d; # 1 day by default
timeout = 5min; # 5 minutes by default
  • 修改 override.d/actions.conf
# 若郵件高於4分, 就觸發灰名單功能
greylist = 4;# Apply greylisting when reaching this score (will emit `soft reject action`)
  • 灰名單白名單功能,
    將不需要觸發灰名單的網域加入到 local.d/greylist-whitelist-domains.inc
1 2 3 ... 6