第一部分:配置 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.key
sudo chmod 644 /etc/ssl/certs/postfix.crt

2. 配置 Postfix 使用 SSL

# 编辑主配置
sudo nano /etc/postfix/main.cf

# 添加或修改以下内容
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/postfix.crt
smtpd_tls_key_file = /etc/ssl/private/postfix.key
smtpd_tls_security_level = encrypt # 强制加密
smtpd_tls_auth_only = yes

3. 启用 465 端口

# 编辑 master.cf
sudo 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 postfix
sudo netstat -tulpn | grep :465 # 检查 465 端口是否监听

第二部分:Joomla SSL 465 端口配置

方案 A:不需要认证(本地服务器推荐)

如果 Postfix 和 Joomla 在同一服务器,可以不使用密码认证:

Joomla后台 → 系统 → 全局配置 → 服务器 → 邮件设置

发送邮件:SMTP
SMTP主机:localhost
SMTP端口:465
SMTP安全:SSL
SMTP认证:否
用户名:留空
密码:留空
发件人邮箱:admin@localhost该 Email 地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
发件人名称:你的网站名称

方案 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/sasldb2
sudo chown postfix:postfix /etc/sasldb2
sudo 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-ssl
sudo apt install telnet-ssl
telnet-ssl localhost 465

 最重要的一点,设置权限(不然没结果):

chmod +x complete_sasl_fix.sh

./complete_sasl_fix.sh


登陆