sendmail

sendmail相关文件解释和配置文件详解:http://zhumeng8337797.blog.163.com/blog/static/100768914201161312010697/
sendmail故障:http://www.gongzi.org/centos-mail-nosendmail.html
sendmail替换postfix:http://www.gongzi.org/centos-install-postfix-sendmail.html

Sendmail服务配置-基础篇

1.Sendmail服务软件包 sendmail-8.13.8-2.el5.i386.rpm:sendmail服务的主程序包,服务器端必须安装该软件包。
sendmail-cf-8.13.8-2.el5.i386.rpm:sendmail宏文件包
sendmail-devel-8.13.8-2.el5.i386.rpm:sendmail服务器开发工具软件包
sendmail-doc-8.13.8-2.el5.i386.rpm:sendmail服务器的说明文档
m4-1.4.5-3.el5.1.i386.rpm:宏处理过虑软件包
dovecot-1.0-1.2.rc15.el5.i386.rpm:接收邮件软件包,安装时需要注意安装顺序

2. Sendmail相关配置文档
sendmail.cf:sendmail核心配置文件,位于/etc/mail/sendmail/sendmail.cf
sendmail.mc:sendmail提供sendmail文件模板,通过编辑此文件后再使用m4工具将结果导入sendmail.cf完成配置sendmail核心配置文件,降低配置复杂度,位于/etc/mail/sendmail.mc
local-host-name:定义收发邮件服务器的域名和主机别名,位于/etc/mail/local-host-name
access.db:用来设置sendmail服务器为哪些主机进行转发邮件,位于/etc/mail/access.db
aliases.db:用来定义邮箱别名,位于/etc/mail/aliases.db
virtusertable.db:用来设置虚拟账户,位于/etc/mail/virtusertable.db

3.邮件功能组件
MUA:邮件用户代理(Mail User Agent)
MTA:邮件传输代理(Mail Transfer Agent)
MDA:邮件递送代理(Mail Delivery Agent)

4.Sendmail常规服务器配置搭建Sendmail服务器流程:
(1)配置sendmail.mc文件
(2)使用m4工具将sendmail.mc文件导入sendmail.cf文件
(3)配置local-host-names文件
(4)建立用户帐号
(5)重新启动服务使配置生效

5.具体步骤为:
#yum install sendmail-*   //安装sendmail相应的包,至于每个包是做什么的,前面介绍过
#yum install m4*      //安装宏处理过虑软件包 快速配置sendmail的工具
#vi /etc/mail/sendmail.mc //编辑配置文件 将侦听范围从127.0.0.1改为0.0.0.0;将本地改为你邮件服务器所使用的域 LOCAL_DOMAIN(`example.com')dnl
#cd /etc/mail   //进到/etc/mail目录下
#make   //使用m4命令将sendmail.mc导入到sendmail.cf这个主配置文件中 这个命令相当于 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf #vi /etc/mail/local-host-names   //修改local-host-names文件添加域名及主机名,添加你服务器的域名,或者完全的主机名,如station133.exameple.com example.com ============== 这样你的sendmail服务已经好了,当然此时还没有打开pop服务。

6.安装pop服务
#yum install dovecot-*   //这样你的pop服务器就已经安装好了 而IMAP协议也继承在这个包里

7.启动sendmail相应的服务
#service sendmail restart
#service dovecot restart
#chkconfig senmdial on
#chkconfig dovecot on

8.测试和验证
#netstat -nltp | grep "25"
#netstat -nltp | grep "110"
#telnet 192.168.76.133 25
ehlo station133.example.com
#telnet 192.168.76.133 110 如果没有什么错误,就表示你的sendmail已经建好了

9.新建用户mailuser 然后在客户端进行收发邮件的测试,由于这里没有使用DNS,所以mail只能在example里进行!

php的mail()函数发邮件问题:

  在ubuntu下的lamp环境中,用php内置函数mail()发送邮件竟然一直false。查看php.ini配置文件,配置如下:

SMTP = localhost
smtp_port = 25
sendmail_from = pklim101@163.com

  都没有错。然后通过查资料发现少安装了sendmail。于是直接:

apt-get install sendmail

  然后执行如下代码的php文件:

 <?php
$a = mail("eyujiao@163.com","My subject","this is the email content!");
var_dump($a);
?>

  打印出来为true,说明发送成功了。但是在邮箱没收到,仔细查看是被过滤到垃圾箱了。


ubuntu系统发邮件问题:
  如果直接mail -s My subject eyujiao@163.com就会提示mail函数未安装,请安装apt-get install mailutils

apt-get install mailutils

    此刻执行命令:

root@ubuntu:/home/administrator# mail -s test eyujiao@163.com
Cc: pklim101@163.com
hello,i'm hobart!
haha  end!

  然后Ctrl+D结束邮件,即发送完毕。在邮箱即可查看到邮件。(其中test是邮箱标题,Cc下面是邮件内容。)
  按下Ctrl+D 键或. 键结束正文。
  连按两次Ctrl+C键则中断工作,不送此信件

Centos环境下:

问题一:
sendmail:554 5.0.0 No local mailer defined
554 5.0.0 QueueDirectory (Q) option must be set

解决:yum install sendmail-cf
        m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf(先备份sendmail.cf,修改sendmail.mc中的127.0.0.1为0.0.0.0后,用m4生成sendmail.cf这个配置文件)

问题二:unable to qualify my own domain name (hostname) -- using short name

解决:vi /etc/hosts,将主机名进行hosts绑定。

问题三:Sender address rejected: Domain not found

解决:(刚才又试了下,似乎以下的不用修改,只需要讲hostname绑定到hosts里就行:127.0.0.1  localhsot)

1.修改主机名为localhost;

2.vi /etc/mail/sendmail.mc,修改LOCAL_DOMAIN('localhost')dnl;

3.在local-host-names里增加一行:localhost.
问题四:用php代码发送邮件,页面相应很慢很慢。

解决:直接用命令修改hostname,然后把hostname加进/etc/hosts,依然很慢。而将hostname显示的临时主机名改为/etc/sysconfig/network里的HOSTNAME的值一致,重启/etc/init.d/network restart,service sendmail restart。即可。飞一样的快。

问题五:去掉“由xxx代发”的字样。

解决:

在php.ini里面找到sendmail_path = /usr/sbin/sendmail -t -i
改成sendmail_path = /usr/sbin/sendmail -t -i -f someone@ccboys.com

问题六:stat=Deferred: Connection timed out with [127.0.0.1]

解决:防火墙放行邮件端口
-A INPUT -p tcp -m multiport --dports 25,110 -j ACCEPT
  

原文地址:https://www.cnblogs.com/thinksasa/p/3092244.html