PHP mail函数不适用于Postfix RHEL8

问题描述

有人可以帮助我吗?我已经将这个问题困扰了将近一个星期。我试图找到一种解决方案,但到目前为止没有用。

我不知道/不知道我在这里缺少什么。我查看了许多帖子和解决方案,并进行了尝试,但似乎没有任何帮助。

我已经在RHEL 8中安装了 Postfix / Dovecot 。我删除了sendmail。我只使用postfix和dovecot。

我正在关注本教程。但是到目前为止还没什么工作。

https://www.youtube.com/watch?v=fEk_ZR1k91s&ab_channel=SysTech

我的目标是使用 PHP mail()函数发送电子邮件

PHP代码显示成功,但是收件箱中没有收到任何电子邮件

这是我的email.PHP,位于 /var/www/html/email.PHP

<?PHP 
error_reporting(-1);
ini_set('display_errors','On');
set_error_handler("var_dump");


$header = "From: nor[email protected]\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$header.= "X-Priority: 1\r\n";

$to      = "[email protected]";
$subject = "Test email from RHEL8";
$message = "test content"; 

$status = mail($to,$subject,$message,$header);

if($status)
{
    echo '<p>Your mail has been sent!</p>';
} else {
    echo '<p>Something went wrong. Please try again!</p>';
}
?> 

这是我在/ var / log / maillog中的邮件日志。如下错误

Oct 24 18:30:37 WEB-PBLC postfix/pickup[2864]: 325E57444: uid=48 from=<apache>
Oct 24 18:30:37 WEB-PBLC postfix/cleanup[3110]: 325E57444: message-id=<[email protected]>
Oct 24 18:30:37 WEB-PBLC postfix/qmgr[2865]: 325E57444: from=<[email protected]>,size=454,nrcpt=1 (queue active)
Oct 24 18:30:37 WEB-PBLC postfix/trivial-rewrite[3111]: warning: hash:/etc/postfix/transport is unavailable. open database /etc/postfix/transport.db: No such file or directory
Oct 24 18:30:37 WEB-PBLC postfix/trivial-rewrite[3111]: warning: hash:/etc/postfix/transport lookup error for "[email protected]"
Oct 24 18:30:37 WEB-PBLC postfix/trivial-rewrite[3111]: warning: transport_maps lookup failure
Oct 24 18:30:37 WEB-PBLC postfix/error[3112]: 325E57444: to=<[email protected]>,relay=none,delay=0.01,delays=0/0/0/0,dsn=4.3.0,status=deferred (address resolver failure)

这是我的/etc/postfix/main.cf

compatibility_level = 2
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.company.com
mydomain = company.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname,localhost.$mydomain,localhost
unkNown_local_recipient_reject_code = 550
mynetworks = 122.217.XX.XX/28,127.0.0.0/8
relay_domains = company.com
transport_maps = hash:/etc/postfix/transport
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailBox = Maildir/ 
debug_peer_level = 2

debugger_command =
     PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
     ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix/samples
readme_directory = /usr/share/doc/postfix/README_FILES

smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_security_level = may
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt

smtp_tls_security_level = may
Meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix

对于Dovecot /etc/dovecot/dovecot.conf,我如下更改文件

listen = *
dict {
  #quota = MysqL:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
!include conf.d/*.conf
!include_try local.conf

对于/etc/dovecot/conf.d/10-auth.conf文件,我添加了这两行。

disable_plaintext_auth = no
auth_mechanisms = plain login

对于/etc/dovecot/conf.d/10-mail.conf文件,我仅编辑此行

mail_location=maildir:~/Maildir

对于/etc/dovecot/conf.d/10-master.conf文件,我编辑此行

unix_listener /var/spool/postfix/private/auth {
                  mode = 0666
                  user = postifx
                  group = postfix
             }

对于/etc/dovecot/conf.d/10-ssl.conf,我仅编辑此行

ssl = yes

然后,我重新启动服务器,重新启动postfix并运行

systemctl enable --Now dovecot
firewall-cmd --add-service=pop3 --permanent
firewall-cmd --add-service=imap --permanent
firewall-cmd --reload

但是我的邮件日志中仍然出现错误。有人真的可以帮我解决这个问题吗?我被困了将近一个星期。我仍然无法使用简单的PHP mail()发送电子邮件

帮助。非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)