⭐ 推荐:社区规则条款 V1.0

小皮面板怎么配置邮件发送(sendmail)?

liulian
liulian 初级会员萌新站长
发布于 2026-10-16 12:32 ·2 浏览 ·0 回复
内容摘要

小皮面板不提供 sendmail 配置界面,邮件发送需在 Linux 系统层安装 sendmail 或 msmtp,并修改对应 PHP 的 sendmail_path 后重启 PHP 测试;若 25 端口被封,则改用 msmtp 走外部 S

结论:小皮面板本身不提供 sendmail 配置界面,邮件发送要在 Linux 系统层完成:先通过 SSH 安装 sendmail 或 msmtp,再修改对应 PHP 版本的 sendmail_path,最后重启 PHP 并用 mail() 测试。若服务器 25 端口被封,直接改用 msmtp 走外部 SMTP 的 587 或 465 端口。

小皮面板里为什么找不到 sendmail 配置?

结论:小皮面板是服务器运维面板,管网站、数据库、FTP、SSL 和 PHP 版本,sendmail 是 Linux 系统服务,两者不在同一层。sendmail 是 MTA(邮件传输代理,负责把邮件投递出去的系统服务),面板不会替你安装和配置它。

先 SSH 登录服务器,执行两条检查命令:

which sendmail
php -i | grep sendmail_path

如果第一条返回空,说明系统没有 sendmail;如果第二条返回 sendmail_path => /usr/sbin/sendmail -t -i,说明 PHP 已经知道该调用哪个程序。小皮面板的 PHP 设置里可以编辑 php.ini,但 sendmail 程序本身仍要系统层安装。

sendmail 怎么在 Linux 服务器上安装并启动?

结论:CentOS 7/8 用 yum,Ubuntu 20.04/22.04 用 apt,装完设置开机启动并检查 25 端口。

CentOS 7/8:

yum install -y sendmail sendmail-cf
systemctl enable --now sendmail

Ubuntu 20.04/22.04:

apt update
apt install -y sendmail
systemctl enable --now sendmail

验证命令:

ss -lntp | grep :25
echo "Subject: test" | sendmail -v test@www.gj0.com

看到 25 端口处于 LISTEN 状态,并且日志没有报错,才算 sendmail 本机启动成功。注意:阿里云、腾讯云、华为云默认封禁 25 端口,本机 sendmail 直接发外网邮箱会超时或被拒。

PHP 的 sendmail_path 怎么改?

结论:在对应 PHP 版本的 php.ini 中设置 sendmail_path = "/usr/sbin/sendmail -t -i",然后重启 PHP-FPM。sendmail_path 是 PHP 配置项,告诉 mail() 函数调用哪个程序发信。

用 php --ini 找到 php.ini 路径,或者在小皮面板的 PHP 设置进入配置文件编辑。写入:

sendmail_path = "/usr/sbin/sendmail -t -i"

保存后,在小皮面板里重启对应 PHP 版本,或 SSH 执行:

systemctl restart php-fpm

测试脚本:

<?php
$to = 'test@www.gj0.com';
$subject = 'sendmail test';
$message = 'hello';
$headers = 'From: webmaster@www.gj0.com' . "\r\n";
var_dump(mail($to, $subject, $message, $headers));
?>

返回 bool(true) 只代表 PHP 把邮件交给了 sendmail,不代表对方一定收到。

为什么 sendmail 显示成功却收不到邮件?

结论:常见原因是 25 端口被封、缺少 SPF/DKIM/PTR 反垃圾记录,或发件域名信誉不足。SPF、DKIM、PTR 都是收件方用来判断发件人是否可信的 DNS 和反向解析记录。

先查日志:

tail -f /var/log/maillog
tail -f /var/log/mail.log

如果日志里出现 Connection timed out、Connection refused,优先怀疑 25 端口。云服务器要发外网邮件,需要提交工单申请解封 25 端口,或者改用 msmtp 走外部 SMTP。

推荐用 msmtp 代替本机 sendmail 吗?

结论:生产环境推荐用 msmtp 通过外部 SMTP 认证发信,端口用 587 或 465,成功率比本机 sendmail 直发高。

Ubuntu 安装:

apt install -y msmtp msmtp-mta

编辑 /etc/msmtprc:

account default
host smtp.www.gj0.com
port 587
auth on
user test@www.gj0.com
password 你的邮箱密码
tls on
tls_starttls on
from test@www.gj0.com
logfile ~/.msmtp.log

设置权限:

chmod 600 /etc/msmtprc

测试:

echo -e "Subject: test\n\nhello" | msmtp -v test@www.gj0.com

msmtp-mta 会提供 /usr/sbin/sendmail 兼容入口,php.ini 仍可写 sendmail_path = "/usr/sbin/sendmail -t -i"。如果直接调用 msmtp,则写 sendmail_path = "/usr/bin/msmtp -t"。

生产环境更稳的方案是什么?

结论:不要把本机 sendmail 当成正式发信通道,用外部 SMTP 认证 + 域名邮箱更稳。WordPress 装 WP Mail SMTP,Typecho、ThinkPHP、Laravel 项目配置 SMTP 驱动。发件域名按邮件服务商要求添加 SPF、DKIM 记录,测试收件地址用 test@www.gj0.com。小皮面板只负责跑 PHP 和网站,邮件能不能进收件箱,取决于系统 MTA、端口、DNS 记录和 SMTP 认证四件事。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-2181.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 0

还没有回复,来抢沙发~