在fedora系统中配置sendmail邮件服务器安装必要的软件
(1)查询rpm-qa sendmail m4
有结果显示证明已经安装了必要的软件,没有显示请使用yum install sendmail命令进行安装(可以上网的情况下)或者利用系统盘进行安装(有光盘的话,iso文件也可以)
(2)安装关联的套件
sendmail-dev,sendmai-doc sendmail-cf
推荐使用yum安装(yum install sendmai*或者挂载光盘进行安装rpm-ivh sendmail-*)
(3)配置域名
vi /etc/mail/local-host-names打开这个文件然后在里面加入你想发邮件的时候用到的域名(可以是虚拟的,但不推荐使用现存的,有侵权的嫌疑~也容易发生错误)例如
[root@localhostnamed]#cat /etc/mail/local-host-names
#local-host-names-include all aliases for your machine here.
ltest.com
test.com就是你想要填的~~~
(4)重建sendmail.cf
sendmail.cf是sendmail的配置文件,通过修改sendmail.mc文件进行修改,
DaemonPortsOptions=Port=smtp,Addr=127.0.0.1,Name=MTA更改为:
DaemonPortsOptions=Port=smtp,Addr=yourip或者0.0.0.0,Name=MTA
或者把这一行用dnl注释掉(就是在这一行前面加入dnl然后空格dnl的意思,按照linux系统管理手册的解释就是deletetonextlin的意思有位仁兄解释为donotload看上去也正确,倒是是那个意思我就不管了,明白意思就好了)
然后m4/etc/mail/sendmail.mc>/etc/mail/sendmail.cf(重建sendmail.cf或者可以先备份,各人喜欢~~)
(5)修改用户认证
还是上面那个文件vi /etc/mail/sendmail.mc进入到里面以后找到
48行dnlTRUST_AUTH_MECH(`EXTERNALDIGEST-MD5CRAM-MD5LOGINPLAIN")dnl
49行dnldefine(`confAUTH_MECHANISMS",`EXTERNALGSSAPIDIGEST-MD5CRAM-MD5LOGINPLAIN")dnl
#刪掉上面兩行前面的dnl
#注意:TRUST_AUTH_METH、define前面不要留有空格
112行dnlDAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA")dnl
#前面加上dnl,把這行註解起來(dnl=donotload)
#或改成下面這樣也可以
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0,Name=MTA")dnl
注:上面修改用户认证这一段是引用我转载的一篇文章的:
(6)修改端口
dnlDAEMON_OPTIONS(`Port=submission,Name=MSA,M=Ea")dnl
去掉行首的注释符,并且将内容修改成Port=25:
DAEMON_OPTIONS(`Port=25,Name=MSA")dnl
在smtp的默认端口(25)上进行认证,而不是587端口。这样就强制所有使用该邮件服务器(就是我们现在架设的这个服务器)进行邮件转发的用户在认证后才能发邮件了。
再次运行m4程序
#m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
用m4重新生成sendmail.cf文件
(7)添加邮件用户
建立用户帐号
[root@localhostnamed]#groupaddmailuser
[root@localhostnamed]#adduser-gmailuser-s/sbin/nologinmike
[root@localhostnamed]#adduser-gmailuser-s/sbin/nologinjohn
[root@localhostnamed]#passwdmike
[root@localhostnamed]#passwdjohn密码由你自己喜欢用户也随你喜欢添加几个(这一段引用另一篇转载的文章)
(8)访问控制
5,访问控制设置
更改/etc/mail/accesss文件,增加:
[root@localhostnamed]#cat/etc/mail/access
#Checkthe/usr/share/doc/sendmail/README.cffileforadescription
#oftheformatofthisfile.(searchforaccess_dbinthatfile)
#The/usr/share/doc/sendmail/README.cfispartofthesendmail-doc
#package.
#
#bydefaultweallowrelayingfromlocalhost...
localhost.localdomainRELAY
localhostRELAY
127.0.0.1RELAY
ltest.comRELAY(这个就是你自己填到local-host-names里面的名字,一定要写[其实我也不肯定,不过我是写了因为我最近时间比较紧迫,没有进行验证,希望看了的朋友帮忙验证一下])
完成后makemaphash/etc/mail/access.db</etc/mail/access进行数据库更新。
(9)重启服务
[root@localhostnamed]#servicesendmailrestart
看到
关闭sm-client:[确定]
关闭sendmail:[确定]
启动sendmail:[确定]
启动sm-client:[确定]
就正确了(后面两个是确定就可以了,因为如果服务还没有启动的华关闭服务会事失败的)
(10)测试服务器
[root@localhostnamed]#telnetlocalhost25
Trying127.0.0.1...
Connectedtolocalhost.localdomain(127.0.0.1).
Escapecharacteris"^]".
220localhost.localdomainESMTPSendmail8.13.1/8.13.1;Sat,17Mar200712:54:47+0800
ehlolocalhost(用户输入)
250-localhost.localdomainHellolocalhost.localdomain[127.0.0.1],pleasedtomeetyou
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTHDIGEST-MD5CRAM-MD5LOGINPLAIN---认证应该生效
250-DELIVERBY
250HELP
quit(用户输入退出telnet)
2212.0.0localhost.localdomainclosingconnection
Connectionclosedbyforeignhost.
看见这些信息就代表成功了
然后就可以使用php的邮件类(网上很多,不好意思,没办法传上来,或者有需要的话,过些时候我会把我用的粘贴上来)在server(邮件服务器这个变量)填上"localhost"用户邮箱(本服务器[刚弄好这个])就填刚刚添加上去的用户名+在local-host-names填上的域名就可以在收件人那里显示了(尽管可能是虚拟的)例如mike@test.com密码就是刚刚用户的密码(这是需要验证的smtp邮件程序)port就是25这样你就可以用你刚刚架好的这台服务器进行邮件的发送了!
2014-09-24 12:29:43