Postfix
支持的字典類型:smtp.gmail.com
我正在嘗試
postfix
在 Docker 容器中進行設置。在啟動時,我正在執行以下安裝腳本:# Install postfix/mailutils with configuration options echo "postfix postfix/mailname string $MAILSERVER:587" | debconf-set-selections echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections apt-get install -yqq postfix apt-get install -yqq mailutils # Setup credentials for SMTP server mkdir -p /etc/postfix/sasl touch /etc/postfix/sasl/sasl_passwd /etc/postfix/main.cf echo "[$MAILSERVER]:587 $EMAIL_USER:$EMAIL_PASSWORD" >> /etc/postfix/sasl/sasl_passwd chown -R postfix:postfix /etc/postfix chmod 600 /etc/postfix/sasl/sasl_passwd postmap /etc/postfix/sasl/sasl_passwd # Create postfix configuration echo "relayhost = [$MAILSERVER]:587" >> /etc/postfix/main.cf echo "smtp_sasl_auth_enable = yes" >> /etc/postfix/main.cf echo "smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd" >> /etc/postfix/main.cf echo "smtp_sasl_security_options = noanonymous" >> /etc/postfix/main.cf echo "smtp_use_tls = yes" >> /etc/postfix/main.cf echo "debug_peer_list = $MAILSERVER" >> /etc/postfix/main.cf echo "debug_peer_level = 3" >> /etc/postfix/main.cf echo "smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt" >> /etc/postfix/main.cf # Reload postfix for new configurations to take effect postfix reload /etc/init.d/postfix restart
執行腳本後,我在結尾處得到以下內容
/etc/postfix/main.cf
:# Use gmail relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_use_tls = yes debug_peer_list=smtp.gmail.com debug_peer_level=3 smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
我已經確認
/etc/postfix/sasl_passwd
並/etc/ssl/certs/ca-certificates.crt
存在,但我不斷得到:postfix/bounce[1052]: error: unsupported dictionary type: smtp.gmail.com
注意:我看到了類似標題的問題,但發布的解決方案對我的設置沒有幫助。
我解決了這個問題,但我不確定是什麼原因造成的。
在安裝過程中,gmail SMTP 伺服器被添加
mydestination
到main.cf
.我最終在我的執行以下腳本
Dockerfile
來修復該值:sed -i '/mydestination =/d' /etc/postfix/main.cf echo "mydestination = localhost.localdomain, localhost" >> /etc/postfix/main.cf
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
在這裡,您使用 Berkeley DB 作為Postfix 查找表類型:
hash
基於散列的索引文件類型。這僅在支持 Berkeley DB 數據庫的系統上可用。公共數據庫文件使用
postmap(1)
orpostalias(1)
命令創建,私有數據庫由 Postfix 守護程序維護。中使用的數據庫名稱是不帶後綴hash:table
的數據庫文件名。.db
因此, 的存在
/etc/postfix/sasl_passwd
並不像 的存在那麼相關/etc/postfix/sasl_passwd.db
,生成於postmap /etc/postfix/sasl_passwd
。但是,如果您失去了該文件,我相信您應該直接告訴它一個錯誤。可能是您的 Postfix 缺少 Berkeley DB 支持。在 Debian 上,預設
postfix
軟體包是使用支持建構的,您可以使用postconf -m
. 如果列表不包括hash
andbtree
,則您缺少支持。然後,有關更多資訊,請參閱Postfix Berkeley DB Howto。