继续阅读完整内容
支持我们的网站,请点击查看下方广告
第一部分:配置 Postfix 支持 SSL 465 端口
首先,确保 Postfix 已正确配置 SSL 465 端口:
1. 生成 SSL 证书(如果还没有)
# 生成自签名证书(本地测试用)sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \-keyout /etc/ssl/private/postfix.key \-out /etc/ssl/certs/postfix.crt \-subj "/C=CN/ST=Local/L=Local/O=Local/CN=localhost"
# 设置权限sudo chmod 600 /etc/ssl/private/postfix.keysudo chmod 644 /etc/ssl/certs/postfix.crt
2. 配置 Postfix 使用 SSL
# 编辑主配置sudo nano /etc/postfix/main.cf
# 添加或修改以下内容smtpd_use_tls = yessmtpd_tls_cert_file = /etc/ssl/certs/postfix.crtsmtpd_tls_key_file = /etc/ssl/private/postfix.keysmtpd_tls_security_level = encrypt # 强制加密smtpd_tls_auth_only = yes
3. 启用 465 端口
# 编辑 master.cfsudo nano /etc/postfix/master.cf
确保以下行取消注释(去掉行首的 #):
smtps inet n - y - - smtpd-o syslog_name=postfix/smtps-o smtpd_tls_wrappermode=yes-o smtpd_sasl_auth_enable=no # 如果不需要认证就设为 no-o smtpd_client_restrictions=permit_mynetworks,reject
4. 重启 Postfix
sudo systemctl restart postfixsudo netstat -tulpn | grep :465 # 检查 465 端口是否监听
第二部分:Joomla SSL 465 端口配置
方案 A:不需要认证(本地服务器推荐)
如果 Postfix 和 Joomla 在同一服务器,可以不使用密码认证:
Joomla后台 → 系统 → 全局配置 → 服务器 → 邮件设置
发送邮件:SMTP
SMTP主机:localhost
SMTP端口:465
SMTP安全:SSL
SMTP认证:否
用户名:留空
密码:留空
发件人邮箱:admin@localhost 或
发件人名称:你的网站名称
方案 B:需要认证(更安全)
如果需要密码认证,先在 Postfix 中创建用户:
# 1. 创建用户sudo adduser joomlamail# 设置密码:输入你想要的密码,记住它
# 2. 配置 SASL 认证sudo apt install libsasl2-modules sasl2-bin
# 3. 配置 Postfix 支持认证sudo nano /etc/postfix/sasl/smtpd.conf
添加:
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN
# 4. 创建 SASL 用户数据库sudo echo "joomlamail:password" | sudo tee -a /etc/sasldb2sudo chown postfix:postfix /etc/sasldb2sudo chmod 660 /etc/sasldb2
# 5. 测试认证sudo testsaslauthd -u joomlamail -p 'yourpassword'
Joomla 配置(带认证):
发送邮件:SMTP
SMTP主机:localhost
SMTP端口:465
SMTP安全:SSL
SMTP认证:是
用户名:joomlamail
密码:你设置的密码
发件人邮箱:joomlamail@localhost
/>发件人名称:你的网站名称
第三部分:测试 SSL 465 连接
# 测试 SSL 465 连接openssl s_client -connect localhost:465 -quiet# 应该看到 SSL 握手成功
# 或者使用 telnet-sslsudo apt install telnet-ssltelnet-ssl localhost 465
最重要的一点,设置权限(不然没结果):
chmod +x complete_sasl_fix.sh
./complete_sasl_fix.sh