免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2162 | 回复: 0
打印 上一主题 下一主题

[Mail] Fedora 6架设Sendmail邮件服务器解决发件人Nobody问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-25 15:27 |只看该作者 |倒序浏览
弄了差不多一个星期,基本弄懂基本的东西,架设过程中,参考网上无数文章,现做一个综合,并在重要的地方给予提醒
一:安装必要的软件
(1)查询  rpm -qa sendmail m4
有结果显示证明已经安装了必要的软件,没有显示请使用yum install sendmail 命令进行安装(可以上网的情况下)或者利用系统盘进行安装(有光盘的话,iso文件也可以)
(2)安装关联的套件
sendmail-dev, sendmai-doc  sendmail-cf
推荐使用yum 安装(yum install sendmai*或者挂载光盘进行安装 rpm -ivh sendmail-*)关于yum的使用,欢迎阅读我转载的yum基本使用:http://zm177cm.blog.163.com/blog/static/114612382007102045940710
(3)安装成功以后
vi /etc/mail/local-host-names         打开这个文件      然后在里面加入你想发邮件的时候用到的域名(可以是虚拟的,但不推荐使用现存 的,有侵权的嫌疑~ 也容易发生错误) 例如
[root@localhost named]# 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系统管理手册的解释就是delete to next lin的意思 有位仁兄解释为 do not load 看上去也正确,倒是是那个意思我就不管了,明白意思就好了)

然后m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf(重建sendmail.cf或者可以先备份,各人喜欢~~)
(5)修改用户认证
还是上面那个文件vi /etc/mail/sendmail.mc 进入到里面以后找到
48行 dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
49行 dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
#刪掉上面兩行前面的 dnl
#注意:TRUST_AUTH_METH、define 前面不要留有空格
112行 dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
#前面加上 dnl, 把這行註解起來(dnl = do not load)

#或改成下面這樣也可以

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
注:上面修改用户认证这一段是引用我转载的一篇文章的:
(6)修改端口
  dnl DAEMON_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@localhost named]# groupadd mailuser
[root@localhost named]# adduser -g mailuser -s /sbin/nologin mike
[root@localhost named]# adduser -g mailuser -s /sbin/nologin john
[root@localhost named]# passwd mike
[root@localhost named]# passwd john 密码由你自己喜欢 用户也随你喜欢添加几个(这一段引用另一篇转载的文章)
(8)访问控制
5,访问控制设置
更改/etc/mail/accesss文件,增加:
[root@localhost named]# cat /etc/mail/access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
ltest.com RELAY(这个就是你自己填到local-host-names里面的名字,一定要写[其实我也不肯定,不过我是写了 因为我最近时间比较紧迫,没有进行验证,希望看了的朋友帮忙验证一下])
完成后makemap hash /etc/mail/access.db < /etc/mail/access进行数据库更新。
(9)重启服务
[root@localhost named]# service sendmail restart
看到
关闭 sm-client:                                           [确定]
关闭 sendmail:                                            [确定]
启动 sendmail:                                            [确定]
启动 sm-client:                                           [确定]
就正确了(后面两个是确定就可以了,因为如果服务还没有启动 的华 关闭服务会事失败的)
(10)测试服务器
[root@localhost named]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.1/8.13.1; Sat, 17 Mar 2007 12:54:47 +0800
ehlo localhost(用户输入)
250-localhost.localdomain Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN ---认证应该生效
250-DELIVERBY
250 HELP
quit(用户输入 退出telnet)
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.

看见这些信息就代表成功了
然后就可以使用php的邮件类(网上很多,不好意思,没办法传上来,或者有需要的话,过些时候我会把我用的粘贴上来)在server(邮件服务器这个变量)填上"localhost" 用户邮箱(本服务器[刚弄好这个])就填刚刚添加上去的用户名+在local-host-names填上的域名就可以在收件人那里显示了(尽管可能是虚拟的)例如mike@test.com 密码就是刚刚用户的密码(这是需要验证的smtp邮件程序) port就是25这样你就可以用你刚刚架好的这台服务器进行邮件的发送了!!


希望我说得明白,如果大家有什么不明白的话欢迎留言或者给我些email。我自己弄这个邮件服务器弄了一个多星期,可以说算是很失败的了,没办法,我基础不扎实,有被逼着帮人家做网站,只好这样边学边摸索了,网上很多文章都有说在linux里面架设服务器,但是就是没教我们怎么用服务器(可能他们觉得不用说吧!!~又或者只是我太笨了,呜呜呜呜~~~~)为什么有些地方我要特别提一下呢?因为那些地方正是使用php发送邮件显示出来的不足的地方:(1)使用mail()函数发送邮件的话,是很简单,问题是收件人显示是nobody这样经过上面在local-host-name以及/etc/mail/accesss 里面的设定就可以解决这个问题了!!还有这样就不用利用雅虎或者其他的服务器做中转站发邮件了(虽然没问题,关于方法我有转载,有兴趣了解的欢迎浏览)我为什么一定要把自己的电脑作服务器呢?? 呵呵 说白了 很简单 ,就是客户要求!~没办法,他要怎样就怎样咯~就好像他要用ubutun做服务器一样(个人感觉不大好,不过我没有深入了解过,知道的朋友也欢迎告诉我一声 ^ _^  很乐意了解!!)

以上文章是综合一下文章加入一点看法和经验组成的,有任何疑问及错误,欢迎提出
http://zm177cm.blog.163.com/blog/static/114612382007102423411289/
http://zm177cm.blog.163.com/blog/static/11461238200710242324037/
http://zm177cm.blog.163.com/blog/static/114612382007102405129803/
都是我转载回来的,原文在下面有注明
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP