快速新增網域ldap通訊錄(outlook 2016)
以前要新增ldap通訊錄,非常麻煩, 一堆設定, 昨天找了一些資源, 包括想要從registry方面下手都失敗, 好險有人寫了一個超方便的程式, 可以快速新增ldap 通訊錄, 感謝啊!
https://github.com/andreighita/MAPIToolkit
官網很詳細寫了說明, 我也整理了一下給大家下載
以前要新增ldap通訊錄,非常麻煩, 一堆設定, 昨天找了一些資源, 包括想要從registry方面下手都失敗, 好險有人寫了一個超方便的程式, 可以快速新增ldap 通訊錄, 感謝啊!
https://github.com/andreighita/MAPIToolkit
官網很詳細寫了說明, 我也整理了一下給大家下載
前陣子弄了docker image postfixad , 可以讓我簡單架設可與網域主控站整合的郵件服務器.
既然有了郵件服務器, 通常還要提供roundcube這類的webmail ,
但是我不想使用webmail的最大問題: 就是帳號跟郵件不一致
登入webmail的帳號與email不相同時, 就很麻煩, 例如:
登入的帳號是 001 , 可是emai卻變成 001@kafeiou.pw , 而不是網域在mail屬性建立的william@kafeiou.pw
這困擾我很久, 甚至想要自己寫一個roundcube的plugin , 想要登入的時候, 改寫email,
後來發現roundcube有個plugin很好用, 就是 new_user_dialog , 啟用後,第一次登入,會強迫設定名字與email, 雖然帳號與email不相同, 就讓麻瓜自行更改吧, 哈
以下列出docker 安裝roundcube方式
docker run --restart always --name roundcubemail -e ROUNDCUBEMAIL_DEFAULT_HOST=tls://<郵件主機> -e ROUNDCUBEMAIL_SMTP_SERVER=tls://<郵件主機> -p 8080:80 -d roundcube/roundcubemail
https://kafeiou.pw/wp-content/uploads/2020/08/unlock_outlook_2016_attach_size_limit.7z
這只能解除outlook的限制, 不代表郵件伺服器的限制也跟著解除
每次需要建立一套 Active Directory + Postfix Mail Server + amavisd , 都會讓我覺得困擾, 因為設定複雜, 枯燥也乏味
因此弄了一個docker 版 postfix mailserver 支援微軟網域伺服器, 這樣就方便多了
功能不多, 但基本防毒, 簡易擋廣告, 加密證書(Let’s Encrypt), aliases, 信箱限制內部使用, open dkim等等都支援.
Dockerfile 源碼
—-
https://github.com/WilliamFromTW/docker-Postfix-AD
docker image
—-
Zimbra我是最近從節神大大(http://blog.jason.tools/)得知是一套優質的郵件服務器,
在此之前我推薦的是 iredmail , 安裝非常簡單,可以多網域管理, 但iredmail免費版並沒有整合microsoft active directory,不建議有AD的企業使用.
Zimbra社群版本,能跟AD整合,還滿適合企業使用, 以下節錄一些心得與重點, 不會紀錄詳細的安裝方式.
Zimbra Container
我通常會優先尋找container的方式安裝, 原因是想快速體驗.不過官方網站的docker停留在2017年的版本, 安裝的時候會失敗, 於是就作罷, 後續接手應該就是 Zimbra X版本了.
手動安裝
只要準備好Linux OS(我使用CenOS 7), 下載最新相對應的檔案(我使用8.8.15), 解開後,執行裡面的 install.sh 就可以依照指示安裝, 安裝前需要搞定hostname. 要修改/etc/hosts 以及執行hostnamectl set-hostname , 這部分install.sh也會提示您.
解除安裝
畢竟不是container, 若解除安裝有問題, 可能造成OS不穩定或是常駐無用服務的狀況, 好險到目前為止安裝很順利, 解除安裝也很簡單, 只要執行 ./install.sh -u 就可以進行解除安裝程序.
解除安裝曾遇到一個問題,就是CentOS有個套件移除不乾淨,需要手動移除, 可以使用rpm -qa|grep zimbra的方式找出相關套件, 手動移除, 這樣才可以移除乾進,才能重新安裝哦.
登入帳號與郵件不同如何處理
su - zimbra
zmlocalconfig -e alias_login_enabled=false
zmcontrol restart mailbox
安裝前請關閉CentOS7上預設的Mail Server
因為zimbra自帶mail server , 所以用不到Linux內建的, 請關閉,否則會衝突
systemctl stop postfix ; systemctl disable postfix
zimbra proxy啟動失敗, 出現invalid port in “0” of the “listen”錯誤
cd /opt/zimbra/libexec ./zmproxyconfig -e -w -H <zimbra host name> ./zmproxyconfig -e -m -H <zimbra host name>
自動取得Let’s Encrypt證書
yum install epel-release mod_ssl certbot -y
#下載certbot_zimbra
wget https://raw.githubusercontent.com/YetOpen/certbot-zimbra/master/certbot_zimbra.sh -P /usr/local/bin
chmod +x /usr/local/bin/certbot_zimbra.sh
#確定主機名稱
/opt/zimbra/bin/zmhostname
# 自動獲取證書
##單一主機名稱)
certbot_zimbra.sh -n
##或是多主機
certbot_zimbra.sh -n -e <第二主機名稱>
擋信政策
擋信政策可以使用管理頁面登入, 參考https://wiki.zimbra.com/wiki/Anti-spam_Strategies 建議設定
手動設定擋信政策
新版設定不太一樣,針對postscreen新的設定可參考這裏 , 另外可參考 這個網站 提供的整體建議.
我綜合之後的設定(有些可使用管理頁面設定就不再額外加入)
## antispam enable ### check status zmlocalconfig antispam_enable_rule_updates zmlocalconfig antispam_enable_restarts ### set enable zmlocalconfig -e antispam_enable_rule_updates=true zmlocalconfig -e antispam_enable_restarts=true zmprov mcf zimbraSpamKillPercent 75 zmprov mcf zimbraSpamTagPercent 20 zmprov mcf zimbraSpamSubjectTag "** CAUTION! SUSPICIOUS EMAIL **" ### restart zmamavisdctl restart ## set MTA restriction zmprov mcf +zimbraMtaBlockedExtension asd zmprov mcf +zimbraMtaBlockedExtension bat zmprov mcf +zimbraMtaBlockedExtension cab zmprov mcf +zimbraMtaBlockedExtension chm zmprov mcf +zimbraMtaBlockedExtension cmd zmprov mcf +zimbraMtaBlockedExtension com zmprov mcf +zimbraMtaBlockedExtension dll zmprov mcf +zimbraMtaBlockedExtension do zmprov mcf +zimbraMtaBlockedExtension exe zmprov mcf +zimbraMtaBlockedExtension hlp zmprov mcf +zimbraMtaBlockedExtension hta zmprov mcf +zimbraMtaBlockedExtension js zmprov mcf +zimbraMtaBlockedExtension jse zmprov mcf +zimbraMtaBlockedExtension lnk zmprov mcf +zimbraMtaBlockedExtension ocx zmprov mcf +zimbraMtaBlockedExtension pif zmprov mcf +zimbraMtaBlockedExtension reg zmprov mcf +zimbraMtaBlockedExtension scr zmprov mcf +zimbraMtaBlockedExtension shb zmprov mcf +zimbraMtaBlockedExtension shm zmprov mcf +zimbraMtaBlockedExtension shs zmprov mcf +zimbraMtaBlockedExtension vbe zmprov mcf +zimbraMtaBlockedExtension vbs zmprov mcf +zimbraMtaBlockedExtension vbx zmprov mcf +zimbraMtaBlockedExtension vxd zmprov mcf +zimbraMtaBlockedExtension wsf zmprov mcf +zimbraMtaBlockedExtension wsh zmprov mcf +zimbraMtaBlockedExtension xl zmprov mcf +zimbraMtaBlockedExtensionWarnAdmin TRUE zmprov mcf +zimbraMtaBlockedExtensionWarnRecipient TRUE zmprov mcf zimbraVirusBlockEncryptedArchive FALSE zmprov gcf zimbraMTARestriction ## set Postscreen , 8.7 and above ### https://wiki.zimbra.com/wiki/Zimbra_Collaboration_Postscreen ### medium/high level zmprov mcf zimbraMtaPostscreenAccessList permit_mynetworks zmprov mcf zimbraMtaPostscreenBareNewlineAction ignore zmprov mcf zimbraMtaPostscreenBareNewlineEnable no zmprov mcf zimbraMtaPostscreenBareNewlineTTL 30d zmprov mcf zimbraMtaPostscreenBlacklistAction ignore zmprov mcf zimbraMtaPostscreenCacheCleanupInterval 12h zmprov mcf zimbraMtaPostscreenCacheRetentionTime 7d zmprov mcf zimbraMtaPostscreenCommandCountLimit 20 zmprov mcf zimbraMtaPostscreenDnsblAction enforce zmprov mcf zimbraMtaPostscreenDnsblSites 'b.barracudacentral.org=127.0.0.2*7' zimbraMtaPostscreenDnsblSites 'dnsbl.inps.de=127.0.0.2*7' zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.[10;11]*8' zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.[4..7]*6' zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.3*4' zimbraMtaPostscreenDnsblSites 'zen.spamhaus.org=127.0.0.2*3' zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].0*-2' zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].1*-3' zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].2*-4' zimbraMtaPostscreenDnsblSites 'list.dnswl.org=127.0.[0..255].3*-5' zimbraMtaPostscreenDnsblSites 'bl.mailspike.net=127.0.0.2*5' zimbraMtaPostscreenDnsblSites 'bl.mailspike.net=127.0.0.[10;11;12]*4' zimbraMtaPostscreenDnsblSites 'wl.mailspike.net=127.0.0.[18;19;20]*-2' zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.10*8' zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.5*6' zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.7*3' zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.8*2' zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.6*2' zimbraMtaPostscreenDnsblSites 'dnsbl.sorbs.net=127.0.0.9*2' zmprov mcf zimbraMtaPostscreenDnsblTTL 5m zmprov mcf zimbraMtaPostscreenDnsblThreshold 8 zmprov mcf zimbraMtaPostscreenDnsblTimeout 10s zmprov mcf zimbraMtaPostscreenDnsblWhitelistThreshold 0 zmprov mcf zimbraMtaPostscreenGreetAction enforce zmprov mcf zimbraMtaPostscreenGreetTTL 1d zmprov mcf zimbraMtaPostscreenNonSmtpCommandAction drop zmprov mcf zimbraMtaPostscreenNonSmtpCommandEnable no zmprov mcf zimbraMtaPostscreenNonSmtpCommandTTL 30d zmprov mcf zimbraMtaPostscreenPipeliningAction enforce zmprov mcf zimbraMtaPostscreenPipeliningEnable no zmprov mcf zimbraMtaPostscreenPipeliningTTL 30d zmprov mcf zimbraMtaPostscreenWatchdogTimeout 10s zmprov mcf zimbraMtaPostscreenWhitelistInterfaces static:all ### Create /opt/zimbra/common/conf/postscreen_wblist vi /opt/zimbra/common/conf/postscreen_wblist ### Rules are evaluated in the order as specified. ### Blacklist 60.70.80.* except 60.70.80.91. 60.70.80.91/32 permit 60.70.80.0/24 reject ### enable white/black list zmprov mcf zimbraMtaPostscreenAccessList "permit_mynetworks, cidr:/opt/zimbra/common/conf/postscreen_wblist" zmprov mcf zimbraMtaPostscreenBlacklistAction enforce ### sender/recipient mismatch zmprov mcf zimbraMtaSmtpdSenderLoginMaps proxy:ldap:/opt/zimbra/conf/ldap-slm.cf zmprov mcf +zimbraMtaSmtpdSenderRestrictions reject_authenticated_sender_login_mismatch zmprov mcf zimbraMtaSmtpdRejectUnlistedRecipient yes zmprov mcf zimbraMtaSmtpdRejectUnlistedSender yes ### restart zmmtactl restart zmconfigdctl restart
重新啟動時, 出現 Unable to start TLS: SSL connect attempt failed error解決方式
zmcontrol stop zmlocalconfig -e ldap_starttls_required=false zmlocalconfig -e ldap_starttls_supported=0 Zmcontrol start
紅色的部份需要注意, 此外若出現 kafeiou.pw 請記得取代掉
#郵件過濾功能(mail gateway),請參考此文章
#2011年曾經寫過類似文章當時是CentOS6,應該大同小異
1. 修改 /etc/postfix/main.cf ,
############################################################### myhostname = mail.kafeiou.pw mydestination=/etc/postfix/local-host-names inet_interfaces = all # Enable IPv4, and IPv6 if supported inet_protocols = all mynetworks = 127.0.0.0/8,192.168.1.0/24 queue_directory = /var/spool/postfix mail_owner = postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix unknown_local_recipient_reject_code = 550 home_mailbox = Maildir/ sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man ############################################################### smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_destination, smtpd_client_restrictions = permit_sasl_authenticated, smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain ############################################################### message_size_limit = 150600000 mailbox_size_limit = 250600000 virtual_mailbox_limit = 250600000 disable_vrfy_command = yes strict_rfc821_envelopes = yes bounce_queue_lifetime = 1d ############################################################### smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_local_domain = ############################################################### smtpd_helo_required = yes smtpd_delay_reject = yes smtpd_helo_restrictions = permit_mynetworks, permit ############################################################## virtual_mailbox_domains = /etc/postfix/domains virtual_mailbox_base = /home/vmail virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf # 1001 is id of user "vmail" created in linux virtual_uid_maps = static:1001 virtual_gid_maps = static:1001 virtual_alias_maps = hash:/etc/aliases,ldap:/etc/postfix/ldap-aliases.cf ############################################################## recipient_bcc_maps = hash:/etc/postfix/recipient_bcc sender_bcc_maps = hash:/etc/postfix/sender_bcc #inet_protocols = ipv4 smtpd_tls_security_level = may smtpd_tls_key_file = /etc/letsencrypt/live/mail.kafeiou.pw/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.kafeiou.pw/fullchain.pem # smtpd_tls_CAfile = /etc/pki/tls/root.crt smtpd_tls_loglevel = 1 smtpd_tls_session_cache_timeout = 3600s smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_cache tls_random_source = dev:/dev/urandom tls_random_exchange_name = /var/lib/postfix/prng_exch # 強制使用TLS smtpd_tls_auth_only = yes smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes # # Disable SSLv2, SSLv3 # smtpd_tls_protocols = !SSLv2 !SSLv3 smtpd_tls_mandatory_protocols = !SSLv2 !SSLv3 smtp_tls_protocols = !SSLv2 !SSLv3 smtp_tls_mandatory_protocols = !SSLv2 !SSLv3 lmtp_tls_protocols = !SSLv2 !SSLv3 lmtp_tls_mandatory_protocols = !SSLv2 !SSLv3 dovecot_destination_recipient_limit = 1 #performance smtpd_error_sleep_time = 0 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 smtpd_client_connection_count_limit=100 smtp_destination_concurrency_limit=100 maximal_backoff_time = 1000s minimal_backoff_time = 300s
2. 修改 /etc/postfix/local-host-names , 加上主機名稱
mail.kafeiou.pw
3. 修改 /etc/postfix/domains , 加上網域
kafeiou.pw
4.新增使用者 vmail , 並紀錄該使用者id , 並更新到 main.cf 裡面的id(可參考步驟1)
groupadd vmail -g 1001; useradd vmail -u 1001 -g 1001
5. 綁定網域帳號
裡面的 mail=%s 代表郵件紀錄在網域的mail欄位
vi /etc/postfix/ldap-users.cf
server_host = <主機ip> search_base = ou=taipei,dc=kafeiou,dc=pw version = 3 query_filter = (&(objectclass=*)(mail=%s)) result_attribute = samaccountname #Account from DC result_format = %s/Maildir/ bind = yes bind_dn = cn=ldap,cn=Users,dc=kafeiou,dc=pw bind_pw = <cn=ldap的密碼>
6. 綁定aliases, 網域設定群組
vi /etc/postfix/ldap-aliases.cf
server_host = <主機ip> search_base = ou=aliases,dc=kafeiou,dc=pw #scope = sub query_filter = (memberOf:1.2.840.113556.1.4.1941:=CN=%s,ou=aliases,dc=kafeiou,dc=pw) result_attribute = mail result_format = %s version = 3 bind = yes bind_dn = cn=ldap,cn=Users,dc=kafeiou,dc=pw bind_pw = <cn=ldap的密碼>
7. 取得letsencrypt, 更新步驟1相關的證書
按此連結到本站能找到資源 , 記得輸入guest/guest
8. 設定收發備份
/etc/postfix/recipient_bcc 與 /etc/postfix/sender_bcc
william收發信都會備份到, public , 記得改完套用 postmap /etc/postfix/recipient_bcc 與 /etc/postfix/sender_bcc
william@kafeiou.pw public@kafeiou.pw
9. 設定submission(TLS加密,使用587 port)
vi /etc/postfix/master.cf
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
10, 修改 /etc/sysconfig/saslauthd
# Directory in which to place saslauthd's listening socket, pid file, and so # on. This directory must already exist. SOCKETDIR=/run/saslauthd # Mechanism to use when checking passwords. Run "saslauthd -v" to get a list # of which mechanism your installation was compiled with the ablity to use. #MECH=pam MECH=ldap # Additional flags to pass to saslauthd on the command line. See saslauthd(8) # for the list of accepted flags. FLAGS="-O /etc/postfix/saslauthd.conf -c -r"
11. 修改 /etc/postfix/saslauthd.conf
ldap_servers: ldap://<網域伺服器IP>:389/ ldap_search_base: ou=taipei,dc=kafeiou,dc=pw ldap_auth_method: bind ldap_version: 3 ldap_bind_dn: cn=ldap,cn=Users,dc=kafeiou,dc=pw ldap_bind_pw: <cn=ldap的密碼> ldap_filter: (sAMAccountName=%u) #ldap_filter: (mail=%u)
以上應該就能夠讓smtp 綁定網域, 以及擁有TLS(port 587)功能
前一陣子偶花很多時間將 esxi 重心改成proxmox ve, 好不容易告一段落.
但是節神又丟出來 mail gateway 這個怪獸,
原來是 proxmox mail gateway(PMG) 開源了(open-source software license GNU AGPL,v3).
這很不得了!
早在 2007 咖啡偶就開始使用 mail gateway 這個概念來過濾郵件, 過濾後才丟到公司內部郵件伺服器.
偶們公司的 mail gateway 使用 linux + postfix + amavisd-new 的方式,
設定極其複雜, 當時還無法透過套件安裝 , 要自行下載甚至編譯 perl 相關模組, 才能使用,
過了幾年為了能達到公司 SSO(single sign on) 的要求, 還研究好久 , 讓 mail gateway 與公司的網域主控站結合,
慘的是公司網域使用工號登入, 工號與郵件名稱又不一樣, 設定起來夭壽雜亂, 設定好之後就不敢動, 也怕動.
但還有些好處, 新人來的時候, 可以拿這個威風一下, 瀟灑地把秘笈丟過去.
現在裝了proxmox mail gateway 5.2 (pmg) , 真想罵髒話(哎喲, 我是彰化人…) , 居然可以輕易取代公司目前使用的mg.
這裡記下一些設定上的眉角:
1. 綁定網域主控站( ldap )
但是要注意一些相關屬性, 例如Base DN(確認帳號是否存在), BaseDN for Groups(確認是否有此群組) , Email 存放在哪個屬性
2.1 設定Who Objects, 這將用來查詢帳號是否在ldap 裡面
新增一個who物件, 於這個物件中綁定步驟1的ldap設定 , 並且務必指定 Unknow LDAP address, 代表無此帳號的意思
2.2. 設定aliases, 因為原本mail gateway 並沒有aliases這個機制, 但公司的郵件伺服器有aliases, 這時候可以這樣做
2.3 設定危險內容(exe, java ,或是副檔名是vbs, shs, 偶是額外加上ace這個副檔名)
3. 新增規則
規則號碼越高,越優先執行,rules with higher priority are executed first
以下範例, 請依現況調整優先順序(但是aliases必須要在ldap之前),
Rule: 100 若符合aliases就通過
Rule: 99 若在ldap搜尋不到該email , 就阻擋
Rule: 98 若符合危險內容就阻擋
4. 設定Relay Domains
5.
5.設定轉寄到內部郵件伺服器
6.
6. 取消灰名單, 以前的經驗告訴偶, 不要啟用這東西, 因為跟公司往來的客戶或廠商, 並不見得有好的mail server
7. 取消寄發到使用者的報表,別讓使用者覺得困擾
8. 一般來說,初體驗會很high, 但是久了就淡了, 因此可以考慮取消各式各樣的報表 status report , 有空再來看就好了
systemctl stop pmgreport.timer
9. 設定 TLS 讓pmg的網頁, 與郵件傳輸使用TLS加密的方式傳輸
9.1 確認是否有DNS CAA
pmg網站需要設定一個對外ip, 與對應dns名稱, 並確保有Certificate Authority Authorization (CAA)功能, 請參閱這裡
9.2 ssh 登入pmg
9.3 取得憑證
安裝工具以便取得免費的證書 LetsEncrypt
apt-get install certbot
certbot certonly –standalone –preferred-challenges http -d <主機dns名稱>
ps. 成功後會在 /etc/letsencrypt/live/<主機名稱> 找到相關的證書, 需要有fullchain.pem , privkey.pem
9.4. 設定憑證
將 fullchain.pem , privkey.pem 合併成一個pem檔案, 並且取代/etc/pmg/pmg-tls.pem , /etc/pmg/pmg-apt.pem
新增並修改renew.sh內容如下
vi /etc/pmg/renew.sh
#!/bin/bash /usr/bin/certbot renew /bin/cat /etc/letsencrypt/live/<主機dns名稱>/fullchain.pem /etc/letsencrypt/live/<主機dns名稱>/privkey.pem > /etc/pmg/pmg-tls.pem /bin/cat /etc/letsencrypt/live/<主機dns名稱>/fullchain.pem /etc/letsencrypt/live/<主機dns名稱>/privkey.pem > /etc/pmg/pmg-api.pem /bin/chmod 600 /etc/pmg/pmg-tls.pem /bin/chmod 640 /etc/pmg/pmg-api.pem /bin/chown root:root /etc/pmg/pmg-tls.pem /bin/chown root:www-data /etc/pmg/pmg-api.pem /bin/systemctl restart pmgproxy
讓renew.sh變成可以執行的屬性 chmod +x /etc/pmg/renew.sh
9.5. 設定排程
我是設定1個月,但理論上3個月執行就可以了
crontab -e
輸入
0 0 1 * * /etc/pmg/renew.sh
9.6 啟用TLS
到pmg網頁, Configuration: Mail Proxo : TLS 勾選啟用
9.7.確認是否啟用startssl ,
請輸入 telnet localhost 25 , 再輸入 ehlo localhost , 即可查詢是否有starttls功能
9.8. 測試是否有加密連線
使用gmail寄信, 觀查 /var/log/mail.log 是否出現 starttls=1 字樣
Apr 16 17:43:24 pmg postfix/smtpd[13252]: disconnect from mail-pg1-f170.google.com[209.85.215.170] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
10. /etc/postfix/main.cf 加上拒絕反查無主機名稱的郵件伺服器IP
smtpd_sender_restrictions = ... ... reject_unknown_reverse_client_hostname
然後重啟postfix ,
systemctl restart postfix
11. 還沒想到
postfix郵箱大小設定, 若您是自架郵件伺服器, 那當然就是郵件總量無限制囉,哈
virtual_mailbox_limit = 0
而且可以讓每封郵件大一點
message_size_limit = 102400000
Linux 如何如實轉寄郵件而不會顯示是誰轉寄的, 這有點繞舌 , 意思就是網管攔截到一封疑似廣告信
但是後來判定不是, 需要重新還給使用者, 這時候用網管的角色轉寄, 寄件者將會出現網管的名字, 而不是原本的寄件者.
因此, 需要原封不動的轉寄過去,
請使用這個指令
swaks -f <網管帳號> -t <收件者帳號> -d <郵件檔案>
-f 網管帳號 的選項可以不用,這只是藏在檔頭裡面方便以後查驗
安裝方式:
CentOS: yum install swaks Ubuntu: apt install swaks
Postfix 擋廣告的限制設定, 重要的有三個,簡稱三兄弟:
老大: smtpd_sender_restrictions
這部份著墨不多, 基本上就是檢查寄件者格式是否正確, 是第一階段限制
老2: smtpd_client_restrictions
這個設定重點在於限制主機名稱 或是 ip
例如:
check_client_access hash:/etc/postfix/sender_mail_hostname_check
代表你必須正確地, 將要限制的郵件主機名稱,或是ip (不能使用萬用字元), 寫入sender_mail_hostname_check 這個檔案裡面, 才能限制該主機.
接著再加上這個很威猛的設定 reject_unknown_client_hostname
利用dns方式, 來驗證主機名稱是否相符正, 否則就拒絕, 舉例來說:
若該郵件主機 ip 是1.2.3.4 , 且dns查詢結果是 xxx.com , 可是實際上 xxx.com 正向查詢不是 1.2.3.4 , 就會被擋下來!
ps. 1.2.3.4 可以宣稱是yyy.com 這個網域的郵件主機, 跟實際dns是xxx.com可以不一樣的.
光是這一招就能解決大部分廣告信, 因為廣告主機都會胡亂宣稱.
當然也造成很多誤判狀況, 因為有些IT人員並不會很認真處理主機ip的反解.
** reject_unknown_client_hostname 可以改用 reject_unknown_reverse_client_hostname 來替代, 只要反查不要查不出主機名稱 , 就不會擋下來, 比較寬鬆.
老3. smtpd_recipient_restrictions
這部份就很多設定了, 重點在於
check_sender_access hash:/etc/postfix/sender_email_check
sender_email_check 紀錄了寄件者郵箱或是網域是否可以限制
與老2不同的是, 這裡可以使用萬用字元, 因為阻擋的不是ip , 而是email