自製郵件伺服器啟動腳本

我用自製的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 呢.

Rocky Linux 9安裝let’s Encrypt

dnf install certbot
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
# 申請mail.test.com 憑證
systemctl stop httpd
certbot certonly --standalone --preferred-challenges http -d  mail.test.com

# 若要renew 請加到crontab
certbot renew --post-hook "systemctl restart httpd"

Rocky Linux 9 安裝podman

 dnf install podman container-tools

讓系統自動啟用podman

systemctl enable podman
systemctl enable podman-restart

修改預設儲存路徑(預設是”/var/lib/containers/storage”)

mkdir -p /podman/storage
vi /etc/containers/storage.conf

讓selinux開放使用

semanage fcontext -a -e /var/lib/containers/storage /podman/storage
restorecon -R -v /podman/storage/

將新的podman storage綁定到原本的/var/lib/container

mount -o bind /podman/storage/ /var/lib/containers
#上面指令綁定,若確認成功,改成開機就綁定
vi /etc/fstab
/podman/storage/ /var/lib/containers bind bind 0 0

重開機,或下指令讓podman 跑起來

systemctl start podman

查看修改的路徑是否生效

podman info

Rocky Linux 9 minimal 安裝後,必須額外安裝的套件

有遇到就加在這裡

#找semanage成是在哪個套件
dnf provides semanage 
dnf install policycoreutils-python-utils
#epel
dnf install epel-release
# CRB
dnf config-manager --enable crb
# net tools include ifconfig
dnf install net-tools
# httpd mod_ssl
dnf install httpd mod_ssl
# git
dnf install git
# sshpass (remote command by ssh )
dnf install sshpass

outlook 關於ldap通訊錄的處理經驗

公司是小公司, 所以我都自架郵件伺服器, 使用postfix mail server + 微軟的網域主控站做認證.

同事的通訊錄就使用ldap連到網域主控,快速設定通訊錄 一直以來相安無事, 若是遇到亂碼,就改用戶端windows系統支援UTF-8

但是最大的問題是, 若是筆電拿到外面去, ldap就無法連線, 就算用不到ldap通訊錄, 收發信的時候, 也常常出現ldap無法連線的錯誤, 很是困擾.

後來發現能修改預設通訊錄檢查方式, 就能避掉外出人員, 收發信的問題.

預設值是”從全域通訊錄清單開始“, 我們改成”從聯絡人資料夾開始“, 開啟通訊錄,也改成”Outlook通訊錄

1 ... 7 8 9 10 11 ... 57