很困擾的httpd反向代理與容器(container)之間的問題

httpd 反向代理很好用, 一個ip就能搞定無數個網站, 某種角度來看, 也兼具資安效果, 可以阻擋使用ip進行網站攻擊的效果.

可是很困擾的是, 當我每三個月需要 renew 免費的 let’s encrypt 證書, 證書是renew成功了, 但是該檔案對應到容器的服務,有些並不會跟著改用新的證書, 就出問題了.

以mail server為例子, postfix與dovecot服務, 都會咬住舊版的證書, 而不使用新的, 重開mail server又要公告, 只能半夜偷偷重開, 真是困擾阿

postfix寄信認證改用dovecot

一直以來我都讓postfix使用 sasl 方式處裡寄信認證, 但是連結到多網域主控伺服器的時候, 就會出錯, 很麻煩.
經過測試 dovecot 可以使用多組 userdb , 與passdb , 達到一個mail server 支援多個ldap網域主控.

當然也能省下一個sasl的service

  • 修改dovecort的 conf.d/10-master.conf
service auth {
...
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    # Assuming the default Postfix user and group
    user = postfix
    group = postfix
  }
  ...
}

#以下設定為了相容outlook系統
auth_mechanisms = plain login
  • 修改postfix的main.cf
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

# On Debian Wheezy path must be relative and queue_directory defined
#queue_directory = /var/spool/postfix

# and the common settings to enable SASL:
smtpd_sasl_auth_enable = yes
  • 修改postfix的master.cf
submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
 ...

參考:

https://doc.dovecot.org/configuration_manual/howto/postfix_and_dovecot_sasl/

g suite 替代方案-自架mail server , postfix+openldap

之前一直維護的是 postfix + M$ 的AD 認證 , 這也可以拿來取代google 代管的mail , 但是沒事還要生出windows server , 這錢花了就算了, 就怕一直要更新… 因此花了5天時間,認真研究 , 讓postfix + openldap 認證 , 做成docker images , 也提供範例架設docker openldap server .

值得注意的是 openldap 必須要吃進去 postfix 的 ldap schema 才能跟postfix整合(aliases) .

https://hub.docker.com/r/inmethod/docker-postfix-openldap

mail出現好奇怪的log “…. rip=::1, lip=::1, secured, session” problem

有時候出現就一大堆, 最後出現too many open files , 有夠怪異, 只好讓限制 imap 與 pop3 只 listen 特定的 ip (ipv4) , 這樣就可以避掉疑似ipv6嘗試入侵的問題, 我自己是覺得可能是系統與dovecot之前某段出了狀況.
請修改 /etc/dovecot/conf.d/10-master.conf

service imap-login {
   inet_listener imap {
     address = x.x.x.x y.y.y.y
     #port = 143
   }
   inet_listener imaps {
     address = x.x.x.x y.y.y.y
     #port = 993
     #ssl = yes
   } 
}
service pop3-login {
   inet_listener pop3 {
     address = x.x.x.x y.y.y.y
     #port = 110
   }
   inet_listener pop3s {
     address = x.x.x.x y.y.y.y
     #port = 995
     #ssl = yes
   }
}