標籤: centos
自製 docker mail server 支援AD ,使用Rspamd過濾廣告
最近對 Rspamd 非常有興趣, 因為該套件提供管理介面 , 所以我立馬捨去amavisd-new老牌套件, 改用Rspamd.
目前只知道啟用clamav防毒, 與預設的廣告防禦功能, 也不知道效果如何, 以後會慢慢研究的.
免費 g suite lagacy , 2022年7月要停用, 該自架郵件伺服器了
我傾向於自架, 一樣規劃兩個方向
第一個方向, 中小企業使用 postfix + amavisd + active directory , 或是 postfix + rspamd + active directory
第二個方向, 個人網域專用 , 大概就是docker上面找一找, 不需要跟AD扯上關係.
我2/5回台灣, 需要隔離11天, 因此花了兩天時間, 於docker中找了一款 mailu 很棒的mail server.
試用了一下, 很好用, 可以支援多網域, 使用最新的rspamd取代老牌amavisd-new .
mailu 安裝簡單, 若是使用docker架設, 官方網站提供設定檔案製作工具 https://setup.mailu.io , 回答完問題, 自動產生docker-compose檔案,與環境設定檔案.
而mailu 使用 rspamd 套件管理防毒, 廣告信,, 灰名單, rate limit, 等等功能, 讓我非常驚艷 , 更棒是該套件有網頁管理功能, 我以後要把amavisd-new換掉, 都改成rspamd
以下是docker安裝時, 遇到letsencrypt的問題的解法,mailu 內建letsencrypt, 但我一律改成使用自己的reverse proxy
1. 修改mailu.ini , 把REAL_IP_FROM 改成reverse proxy ip
REAL_IP_HEADER=X-Real-IP
REAL_IP_FROM=x.x.x.x,y.y.y.y.y
2. 利用scripts 把 reverse proxy 中的letsencryp 的認證檔案放到 docker-compose目錄下的 certs 裡面 , 檔名為
cert.pem , key.pem
mailu使用network bridge 的方式, 所以maillog看不到外界真實存取的ip , 若需要fail2ban 將無法正常使用, 官網說可以用rate limit方式取代, 但我覺得這不是重點, 重點在於maillog無法反映真實ip紀錄, 這企業很難認同.
postfix 討厭的 <> null登入
每次看maillog , 都會發現有<> null 登入的現象, 因此需要阻擋
修改main.cf
smtpd_sender_restrictions = ... check_sender_access hash:/etc/postfix/sender-check
修改 /etc/postfix/sender-check , 修改完畢需要執行postmap
<> REJECT null users are not allowed
postfix 關於rate limit設定
一些基本限制相關連線的基本設定
##
## 效能調教, 視情況修改
##
#default_process_limit = 150
#qmgr_message_active_limit = 40000
#qmgr_message_recipient_limit = 40000
#default_destination_concurrency_limit=100
#default_destination_recipient_limit=100
#default_process_limit=200
#smtp_mx_session_limit=100
#smtp_destination_concurrency_limit=100
#maximal_backoff_time = 1000s
#minimal_backoff_time = 300s
##
## 阻擋惡意連線
##
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
##
## 用戶端每60秒,最多連線20次, 且同時只能10個連線
##
anvil_rate_time_unit=60s
smtpd_client_connection_rate_limit=20
smtpd_client_connection_count_limit=10
,
postfix ldap測試/查詢帳號是否存在
postfix 很常見搭配微軟的AD , AD的設定檔長這樣, 檔案名稱為 xxx.cf
server_host = <AD server IP> search_base = ou=xx,dc=yyy,dc=com version = 3 query_filter = (&(objectclass=*)(mail=%s)) result_attribute = samaccountname #Account from DC result_format = %s/Maildir/ bind = yes bind_dn = cn=zzz,cn=Users,dc=yyy,dc=com bind_pw = password
配合以下指令,可以用來查詢email對應的帳號是否正確
postmap -q abc@yyy.com ldap:/directory/xxx.cf
這樣就可以測試帳號是否存在了
linxu 刪除N天以前的檔案
centos 7 裝了docker , 限制內網透過nat上網會失效
一般公司省錢的作法, 就是一台linux主機 , 充當上網(nat) 分享器,
但後來該主機又搞了docker .
可是docker 預設網路(iptables) 都開放, 很麻煩, 造成原本firewall-cmd出問題, 無法限制內部ip上網, 所有ip都能上網, 超麻煩的,
後來發現iptables也能運作, 於是就搭配 iptables 限制內部ip上網
iptables -I FORWARD 1 -s 192.10.20.0/24 -j DROP # 限制全部內網ip透過nat上網 iptables -I FORWARD 1 -s 192.10.20.101/32 -j ACCEPT # 讓101能上網
VirtualBox裝Rocky Linux後,再裝guest additions
- Insert Guest Additions CD image
此時系統會嘗試安裝, 結果當然失敗
- 安裝 kernel-devel kernel-headers
yum install kernel-devel-xxxx kernel-headers-xxxx
- 安裝gcc make perl
yum install gcc make perl
- 安裝libelf
yum list |grep libelf #找出套件
yum install elfutils-libelf* #後面接星號, 全部安裝
- 執行 ./VBoxLinuxAdditions.run
當然會失敗
- 執行 rcvboxadd
/sbin/rcvboxadd quicksetup all
- 接下來就是再安裝看看 , 有可能會移除, 然後再重安裝一次, 然後重開機
./VBoxLinuxAdditions.run
Linux 將命令模式下執行程式,所輸出的紀錄引導到檔案
以java為例,
System.out.println(“log …”)
可以在console下看到結果, 但我們若需要未來分析使用, 就必須導到檔案.
執行時可以增加以下參數
java -jar xxx.jar > a.out 2>&1
以前常常搞不清楚, 現在也還是一樣不太懂, 沒差拉, 這樣就可以用了, 然後 tail -f a.out 就可以在螢幕看到即時訊息, 事後也能將a.out保存起來呢.