標籤: ubuntu
免費 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
,
ssh 用戶端不支援舊版加密解法
新的ssh 用戶端已經不支援舊版的加密方式, 因此若伺服器提供的sshd 加密過舊, 則必須手動調整,讓ssh 用戶端強制使用舊版方式連線.
做法就是先確認伺服器提供的加密法
# ssh -l root 192.168.1.1
Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
然後請視情況(錯誤訊息), 更改演算法與支援的key
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss -l root x.x.x.x
若連線還是失敗, 出現以下錯誤
ssh_dispatch_run_fatal: Connection to 192.168.1.1 port 22: error in libcrypto
用戶端嘗試執行以下指令
update-crypto-policies --set LEGACY
Linux查詢使用者變更密碼時間
Linux如何變更檔案日期
touch -a -m -t 201512180130.09 fileName
-a = accessed
-m = modified
-t = timestamp - YYMMDDhhmm.ss time format
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
這樣就可以測試帳號是否存在了
github desktop非官方linux版本
https://github.com/shiftkey/desktop
ubuntu 安裝方式:
1. wget https://github.com/shiftkey/desktop/releases/download/xxx.deb 2. sudo apt-get install gdebi-core 3. sudo gdebi xxx.deb