docker container啟動管理supervisord設定心得

supervisord是常用的docker啟動管理程序, 通常我們都把一大堆服務寫進去supervisord.conf, 我最近弄的docker mail server (綁定AD) , 常常遇到container重啟時(docker restart) , supervisord裡面的service會出現already started字樣, 爬了文, 好像是這個參數搞的鬼, startsecs , 官網解釋如下

The total number of seconds which the program needs to stay running after a startup to consider the start successful (moving the process from the STARTING state to the RUNNING state)

也就是說這些service啟動成功後, supervisord預設會等個1秒才移除STARTING狀態, 但有可能造成service本身誤判, 誤以為已啟動,又再啟動一次, 所以service會重複跑個幾次 , 甚至有時候就再起不能了.

目前測試結果可以修改兩個參數, 一個是startsecs=0(立即更新成running狀態) , 另一個是startretries=0(重複啟動次數)
我是決定只改 startsecs=0 , 果然就沒出現already started字樣


ps. 這只是我個人測試自己docker mail server的心得, 沒有多次驗證

CEntOS 7 postfix 新增lmtp 與 managesieve功能

之前自己製作的mail server (綁定AD) , 休假功能使用的是 lda + sieve + managesieve 的方式進行, 可是在朋友公司運行時, 卻發生效率不彰的狀況(活躍的email帳號約500個).
查詢了一下, 發現官方已經建議使用 lmtp 的方式取代 lda , 原因是lda屬於觸發類型, 而 lmtp是常駐服務類型, 常駐服務類型效率較好.
於是將自己製作的 docker mail server 改良成 lmtp , 有機會再請朋友測試效率.

以下是讓centos啟用lmtp功能的設定文件(登入帳號密碼guest)

https://docs.kafeiou.pw/iammis/技術文章/HowTo/10033_(CEntOS7.9)新增lmtp_managesieve功能.txt

你必須懂的postfix+amavisd擋廣告順序

就連我都會誤解!
以為只要在postfix的main.cf裡面設定各式各樣的擋廣告方式(包含參考黑名單網站),就可以高枕無憂了,
可是事情並不是我們憨人想得這麼簡單
擋廣告總有順序的.

  1. amavisd 優先
    這部分很重要,有時候很多廣告商,都利用gmail , amazons發送廣告信, amavisd 很容易直接pass, 要解決這問題, 就只能土法煉鋼, 將廣告的網域,email寫到amavisd的黑名單上.
  2. postfix 次要
    若amavisd認定pass , 這邊再怎麼設定都沒用, 因為根本不會跑到這裡來.
    若amavisd沒有認定pass, 也沒認定是廣告(分數不足), 就會跑到這裡來,

我的設定, 就是讓amavisd可以定義黑白名單, 接下來才是設定postfix本身的名單限制
推薦看一下我製作的docker mail server設定
https://github.com/WilliamFromTW/docker-Postfix-AD

啟用postgrey心得

因為postgrey的機制會造成收信延遲, 所以必須設定白名單,與自動白名單,讓常用的郵件不再受限制.
1.白名單可在/etc/postfix/postgrey_whitelist_clients.local 新增
2.自動白名單,以centos 7為例子, 可在 /etc/sysconfig/postgrey 新增, 意指35天內,只要成功三次,就會一直是白名單成員
POSTGREY_OPTS=”–delay=60 –auto-whitelist-clients=5 –max-age=35″

cetnos 7 + postfix 新增dkim功能

  1. 安裝

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y opendkim

  1. 產生private key與dns的TXT Record

opendkim-genkey -d <domain name>
cp default.* /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim

  1. 修改/etc/opendkim.conf
    確認該設定檔案有以下的設定( KeyFile /etc/opendkim/keys/default.private 要mark起來 )

Mode sv
Socket inet:8891@127.0.0.1
Canonicalization relaxed/simple
Domain <domain name>
#KeyFile /etc/opendkim/keys/default.private
KeyTable refile:/etc/opendkim/KeyTable
#ps 若使用測試軟體出現invalid data set, 請改成 KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

  1. 修改 /etc/opendkim/KeyTable

default._domainkey.<domain name> <domain name>:default:/etc/opendkim/keys/default.private

以 test.com 為例子

default._domainkey.test.com test.com:default:/etc/opendkim/keys/default.private

  1. 修改 /etc/opendkim/SigningTable

*@<domain name> default._domainkey.<domain name>

以test.com為例子

*@test.com default._domainkey.test.com

  1. 修改 /etc/opendkim/TrustedHosts

127.0.0.1
<mail host name>
<domain name>

以 test.com 為例子

127.0.0.1
mail.test.com
test.com

  1. 新增以下設定 /etc/postfix/main.cf

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

  1. 將/etc/opendkim/key/default.txt的資料更新到dns上

  2. 啟用service

systemctl start opendkim ; systemctl enable opendkim ; systemctl restart postfix

  1. 測試
    • opendkim-testkey -x /etc/opendkim.conf 若無錯誤訊息代表成功
    • 測試網站 https://www.appmaildev.com/

1 ... 7 8 9 10 11 ... 14