网站首页 > 技术 正文

centos下discuz论坛邮件服务sendmail安装

唐哲 2020-10-04 11:57:05 技术 10596 ℃ 1 评论

    discuz论坛中的密码找回功能需要用到邮件模块,这篇文章就是说明如何安装配置discuz的sendmail。

    

一、安装sendmail

    登录服务器,运行

    yum install sendmail mailx

    image.png


二、修改 smtp 配置文件 

    1、添加配置mail.rc

        vi /etc/mail.rc

        添加如下配置项 

        set from=robot@mimvp.com

        set smtp=smtps://smtp.exmail.qq.com:465

        set ssl-verify=ignore

        set nss-config-dir=/root/.certs

        set smtp-auth-user=robot@mimvp.com

        set smtp-auth-password=mimvp-password

        set smtp-auth=login

        image.png


    2、创建证书目录

        mkdir /root/.certs

        然后,ssl 授权,执行如下命令

        echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt

        certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

        certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt

        certutil -L -d ~/.certs

        certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs/ -i ~/.certs/qq.crt

        如果certutil 未找到命令,执行:yum install -y nss-tools

        最后一条命令可能出错,可以忽略。

        image.png

    

三、添加465端口到防火墙

    firewall-cmd --zone=public --add-port=465/tcp --permanent

    添加后重启防火墙:firewall-cmd --reload

    image.png


四、检测及与运行

    sendmail的Log文件:tail /var/log/maillog

    在服务器上测试sendmail发送邮件:mail -v -s "subject_title" yanggang@mimvp.com < /etc/passwd 

    用上面的方法在服务器的命令行,可以发送邮件,但是在discuz后台发送不成功,找回密码也不行,这说明php不能用sendmail发送邮件。

    image.png

    看sendmail的log文件,出现如下的错误:

    Oct  4 17:22:43 nice-sweetness-2 sendmail[1221]: 0949MhQb001221: from=apache, size=2970, class=0, nrcpts=1, msgid=<202010040922.0949MhQb001221@nice-sweetness-2.localdomain>, relay=apache@localhost

    Oct  4 17:22:43 nice-sweetness-2 sendmail[1221]: 0949MhQb001221: to==?utf-8?B?RUHpgqbllJDogIHluIg=?= <9907696@qq.com>, ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32970, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]

    解决方法:

        修改host文件,vi /etc/hosts

        添加下面两行,这里与上面出错的服务器名称对应

        127.0.0.1 nice-sweetness-2.localdomain

        127.0.0.1 nice-sweetness-2

        image.png

        保存hosts文件后,重启sendmail服务:service sendmail restart


    现在再试一下,就可以通过php调用sendmail发邮件了。

    image.png


    还有一点忘了,重启服务器后,如果运行:netstat -ntlp

    发现sendmail没有启动,这时就要添加sendmail的启动项。

    要把sendmail加到启动项:systemctl enable sendmail.service

    重启后,运行netstat -ntlp,会看到sendmail已经启动了。

    image.png

本文TAG:

已有1位网友发表了看法

  • 招投标

    招投标  评论于 [2021-01-21 15:53:26]  回复

    跟着博主能学到很多有用的东西呢

欢迎 发表评论:

请填写验证码
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
搜索
网站分类
站点信息
  • 文章总数:89
  • 页面总数:1
  • 分类总数:4
  • 标签总数:19
  • 评论总数:97
  • 浏览总数:617505
控制面板
您好,欢迎到访网站!
  查看权限
唐哲 - 和仲科技