关于sendmail的FAQ.

发表于:2007-05-25来源:作者:点击数: 标签:
由于论坛问的sendmail问题有很多重复的,所以写了这个帖子。希望大家查找方便。 由于本人技术、精力有限,对sendmail也没有作过太深入的研究。只是以前经常使用,对配置熟一些,希望能在这里起到抛砖引玉的作用。 其实free的版本的sendmail没什么太多的工具

由于论坛问的sendmail问题有很多重复的,所以写了这个帖子。希望大家查找方便。
  由于本人技术、精力有限,对sendmail也没有作过太深入的研究。只是以前经常使用,对配置熟一些,希望能在这里起到抛砖引玉的作用。
其实free的版本的sendmail没什么太多的工具,所有的工具都要自己开发,不好讨论了。这里我们我们主要讨论两方面MTA和webmail,webmail方面我认为最适合的是openwebmail了。
其他方面东西,希望斑竹老大能给给予整理。

  首先,建议要配置sendmail的朋友,最好看看着几篇文章。
sendmail的配置文章,带sasl认证的,心余写的:
http://www.chinaunix.net/forum/viewtopic.php?t=47662
我以前写的,关于sendmail+openwebmail的文章,其中openwebmail。1。65可能有点老了,但可以参考:
http://www.chinaunix.net/bbsjh/1/3395.html
关于openwebmail对最新版本的文章,这个是必须要看的!:
http://openwebmail.org/openwebmail/doc/readme.txt
以上推荐的文章,我都亲自配置过多次,均获得成功。
下面FAQ的具体内容,我会不停的整理和更新,也希望大家共同维护。

第一部分:MTA配置:

前言
   sendmail作为一个优秀的MTA,一直是UNXI系统中缺省的邮件服务器。在UNIX中,应用程序是和配置文件分开的放置的。就sendmail而言,sendmail的程序是一般放在/usr/sbin目录下(不同的版本UNIX版本路径可能有所不同),而配置文件是放在/etc或者/etc/mail中(不同的版本UNIX版本路径可能有所不同),在sendmail v8.9以后,sendmail增加了一个宏编译文件/sendmail.mc,通过在宏编译文件中加一些选项,再经过编译就可以得到一个sendmail.cf的配置文件,极大的方便了用户。


1、怎样编译生成sendmail.cf文件?
a:redhat7.0的版本,
# m4 /usr/share/sendmail-cf/cf/redhat.mc > /etc/sendmail.cf
   redhat7.2以上:
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 
   如果提示没有发现命令,是没有安装sendmail-cf-*文件包。
   redhat光盘中有rpm包,可以直接安装。其他版本,download相应的软件包安装。


2、sendmail如何做能支持POP3?
a:sendmail本身不支持pop3服务,你要安装相应的ipop3服务软件。
 这里以redhat8为例,找到安装光盘中的imap*.rpm文件。
 # rpm -ivh imap*.rpm
 # vi /etc/xinetd.d/ipop3
 更改 disable=yes 为 no
 # /etc/rc.d/init.d/xinetd restart

3、如何饶过firewall的屏蔽。
 vi /etc/mail/sendmail.mc
 Feature ('accept_unresolvable_domains') 
添上这一句,就可以传递那些域名不能从你的邮件服务器所在主机解析的邮件。当邮件在防火墙里面时,必须使用这个特性。否则有些邮件不可到达。使用这个特性后,sendmail就不会直接去试图解析那些邮件地址,而是把邮件转发到上一级邮件服务器,让其去转发,就可以饶过防火墙屏蔽。

4、sendmail使用的用户账号是系统的 ,这些用户的login shell定义的是no shell(email only),如何让用户自己修改密码?是不是要改用其他的操作系统和软件才能实现啊? 
多谢指点!!!
a:不用啊,可以自己编写一个shell,给mail user用。 
例如: 
1、更改密码 
2、删除信件。 
3、退出。 
具体你要自己编写。 
也可以编写一个web方式的,来更改密码。 
实在不行,在装一个webmail,通过她来更改密码。例如:openwebmail。
当然,可以从中分离出更改密码的页面。

5、本机上可以telnet ip address 25和110端口,但是客户端不行,提示连接失败,为什么?   
xingplayer: 
a:看看防火墙是不是打开了,关闭掉或者设置打开25或者110端口。
   或者是这个原因, sendmail.cf文件中有一个选项: 
O DaemonPortOptions 


edit /etc/sendmail.cf 
找到: 
# SMTP daemon options 
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 
添加: 
# SMTP daemon options 
O DaemonPortOptions=Port=smtp,Addr=你的IP, Name=MTA 
保存! 


这样就能够解决问题

  
6、如何建立一个mail 的dns记录:
 mail    IN A   192.168.2.11   --你的mail主机地址。
 @       IN MX   10   mail     ---建立你的mx记录,邮件等级为10。

7、请教高手,我想知道在Linux下怎样查看和删除当前邮件队列?
a:查看:
  #mailq |more  ---看到的是超过正常时间限制的信件
  #ls /var/spool/mqueue  --队列中所有的信件。
   删除:
  # rm -rf /var/spool/mqueue/*

8、公司内部使用的是Exchange邮件系统。现在希望使用一台linux server来作对外的mail relay.以减轻E2k的负担。应该怎样作? 
我现在用sendmail作对外的relay是没有问题了。但是对于收信,我不清楚怎样配置。 
我不明白,一台server怎樣同時制定不同的規則,因為外發/內送的規則是截然不同的.因为: 
OUtbound: 來源 指定主機(指定@domain) 目標: all host,all domain to internet (這個我東拼西湊,總算基本可以實現,就使用access文件) 

Inbound: 來源 All host,all domain internet 目標:@intra.com.cn 

這樣兩個完全衝突的規則,如何在一個service 的配置中實現? 
我實在是很困惑,還請各位指教指教.
a:其实我个人觉得,你用了liunx下的sendmail,完全可以替代了exchange,我的一台PIII500,256sdrom,18G的compaq pcserver,我总共10000左右用户,是以前isp做的mail server,100多个公司,也就是100多个虚拟域名。使用率很高,但是当时不提供webmail服务。工作性能良好,从没出现超负荷情况。 

如果你非得要做的话,有一个解决方法。 
首先,sendmail 要装smtp服务,不要装pop3服务了。 exchange都要装smtp and pop3服务。 
在dns server中设置: 
smtp IN A sendmailhost ip address 
pop3 IN A exchangehost ip address 
@ IN MX 10 pop3 
理论分析: 
首先是发信,你的用户给外面的发信,用的smtp服务器是sendmail的主机地址,实现了你的作对外的mail relay。外面的给你的邮件和你公司员工互相发的邮件,在smtp server之间,查找的是mx纪录,而不是A纪录,所以,就发到了pop3主机上,也就是你的exchange主机。还有的是通过你的用户有别名的,到了你的exchange主机上,还要relay,所以,exchange的主机也要启动smtp,但是,它只是很少的转发,没有太大的流量。这样,就应该实现了你的要求。 

这样的结果就是smtp and pop3服务分开了。sendmail负责mail relay,exchange 负责pop3 和别名转发。 
你要是还要exchange负责发给不的信件,在server端设置,就麻烦了。你可以用foxmail,在客户端设置。但是要是公司人多,也非常麻烦。 
还不如我说的,实现smtp and pop3分开,无伤大局。 
不知道可不可以实现你的要求。:)
9、设置了access,为什么不生效?
a:首先,你要正确配置/etc/mail/access。还要看你的/sendmail.cf文件中的对access的定义。
access-db
Feature(`access_db','hash /etc/mailaccess') 
Feature(`access_db','dbm /etc/mailaccess') 
第一种,是要生成哈希表形式的库文件
要运行:
# makemap hash /etc/mail/access.db < /etc/mail/access
第二种,是传统的数据库格式。
运行:
# makemap dbm /etc/mail/access.db < /etc/mail/access

10、我在我们局域网配置了个mail服务器,出现这样一个问题。请大家帮忙: 
我输入smtp,pop3输入我机器的ip地址没有问题,但输入我的DNS主机器名,就 
不能进行收发mail. 
我问过别人,他说是DSN的配置问题,我通过xwindows配置的,感觉很简单,那里有错呢? 
牵扯到DSN的就是: 
主机器名:test.com 
主DNS:我机器的ip地址 
域名:test.com 
不清楚那里错了,请大家这点。多谢!
a:首先,保证你的dns server设置正确。 
其次,你还要清楚,你在局域网中测试。你的域名test.com不是合法的。 
正常的dns server是解析不到的。 
你要用主机名和域名测试,要保证客户机使用的dns server要用给你的mail server作解析的dns server保持一致。这样,按照dns server的工作原理,才能给你的可户机作正确的解析。 
有的时候还要reboot客户主机,或直接清除你的cache,才可以的。

11、我想给邮件服务器上的所有mail用户发新,或给其中指定的很多用户发信,怎么解决啊?
a:建立别名文件,也就是做群发啊。
看你的sendmail.cf或者sendmail.mc文件中,应该有定义。
具体操作:
1、编辑系统别名文件,添加一个虚拟用户alluser。
#vi /etc/aliases
alluser::include:/etc/mail/alluser
2、重新生效一下。
#newaliases
3、编写用户文件,格式是每一行一个用户名。用户名是你公司所有员工的用户名或者你想要转发的用户。
vi /etc/mail/alluser
peng
gadfly
tiantian
。。。。
。。。
到着,就应该ok了,应该不用重起sendmail进程。

12、我想对我公司的内部的LINUX9。01邮件服务器(sendmail )进行远程控控制 (包括加用户,系统开关机等)为什么在外面不能用root 用户登陆系统啊。 是不是把普通用户的权限改成系统管理员的权限就可以啊。从那个地方进行修改啊。 目地是对LINUX邮件服务器进行远程控制。 

a:telnet服务默认是不支持root直接登陆的,ssh可以的。但是不提倡,这种习惯不好。。。

13、先用普通的用户登进去, 再用SU然后输入ROOT的密码可以进入到: 
可以实现关机。重新启动功能,但还是不能加、删除用户。怎样才能实现添加、删除用户的功能呢???

a:应该是: 
$su - 
只输入su,是转换了root的uid,但是没有加载环境变量。 
用su -,就加载了环境变量。 
你用su,添加用户就要写全命令路径!



第二部分,webmail:

 netloafer 回复于:2003-06-20 16:40:39
不错,弓虽人呀!!

呵呵
sendmail、qmail、postfix的FAQ都建立起业,这样,一般的问题都基本上可以解决了。

还是请新手多多看一下本版的FAQ

请版主帮忙置顶!!

 peng 回复于:2003-06-20 16:45:19
呵呵,小叶子在啊,今天怎么得闲了?
先写这么多了,想不起来了,有时间我会慢慢补充的。
也请高手们指点错误和多多发言啊?

 gadfly 回复于:2003-06-20 17:33:51
哈哈,二位百忙之中抽空出来,真是不错呀。

好了,现在三大MTA的FAQ全了。

 ilovewalk 回复于:2003-06-22 22:19:29
我想提个问,如果用户不记得他的密码啦,应该怎么办呢???

 peng 回复于:2003-06-23 09:19:09
[quote:5275f2cecc="ilovewalk"]我想提个问,如果用户不记得他的密码啦,应该怎么办呢???[/quote:5275f2cecc]     
管理员可以更改啊!
初始化密码就可以了。

 frame 回复于:2003-06-25 17:13:59
问一个问题啊
按照说明安装好了以后,到OUTLOOK里可以发邮件了,可以发到HOTMAIL里,但HOTMAIL回复的信这里却收不到,也没有出错信息

相互发送(sale@domainname.com 到other@domailname.com)可以收发,外面发来的信收不到

是不是MX的问题??

 peng 回复于:2003-06-25 17:20:11
有可能。看看我上边写的关于dns的问题,和你的不一样吗?
还有,你的域名是合法的吗?机器在公网上吗?

 frame 回复于:2003-06-26 09:06:41
域名是合法的,机器在公网上的

 peng 回复于:2003-06-26 10:33:06
贴出你的dns配置看看。。。

 xingplayer 回复于:2003-06-30 23:37:09
关于第5个问题的回答     
原文如下:
“5、本机上可以telnet ip address 25和110端口,但是客户端不行,提示连接失败,为什么? 
a:看看防火墙是不是打开了,关闭掉或者设置打开25或者110端口。 ”

其实还有其他原因, sendmail.cf文件中有一个选项:
O DaemonPortOptions 


edit /etc/sendmail.cf 
找到: 
# SMTP daemon options 
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 
添加: 
# SMTP daemon options 
O DaemonPortOptions=Port=smtp,Addr=你的IP, Name=MTA 
保存! 


这样就能够解决问题

 dwq123 回复于:2003-08-11 15:48:23
老大们,我在本机上#telnet localhost 25 时不成功啊,提示如下:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 dns.eef.com ESMTP Sendmail 8.11.6/8.11.6; Mon, 11 Aug 2003 15:21:31 +0800
后面就什么都没有了,为什么没有出现250-AUTH LOGIN PLAIN的行。

 peng 回复于:2003-08-11 15:56:35
[quote:c7a05fc4b7="dwq123"]老大们,我在本机上#telnet localhost 25 时不成功啊,提示如下:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 dns.eef.com ESMTP Sendmail 8.11.6/8.11.6; Mon, 11 Aug 2003 ..........[/quote:c7a05fc4b7]     

呵呵~哥们!
想看下面的,接着输入:
 EHLO localhost    ---再回车。。。。

 dwq123 回复于:2003-08-11 16:12:50
结果显示下面的信息:
250-dns.eef.com Hello dns.eef.com [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP
还是没有250-AUTH LOGIN PLAIN的信息啊?

 peng 回复于:2003-08-11 16:15:57
停止sendmail,重新启动在看看。
要是没有,看心余的帖子:
有没有正确编译sasl,检查sendmail.mc文件。

 dwq123 回复于:2003-08-11 17:07:55
谢谢阿peng,我现在配好了,但是我用outlook发邮件时提示:SMTP reply 553  5.5.4

 peng 回复于:2003-08-11 17:36:55
晕~你怎么这么粗心啊!
打开outlook--工具--帐浩-邮件-属性-服务器--我的服务器需要身份验证--打上对勾!

干了这么多,不就是为了这个对勾能生效吗?

 dwq123 回复于:2003-08-11 18:10:45
谢谢阿peng,我配好了。
但是现在又有另一个问题:用outlook发信时提示:SMTP  Server reply 553 5.5.4 .......
请问是什么原因?

 peng 回复于:2003-08-11 18:14:04
照我上边说的做。。。。。。。。

 Suche 回复于:2003-08-12 18:29:33
TO peng老大,我是一个linux新手,最近在给实验室搞内部服务器,希望建立一个在局域网内部使用的email的服务器,使用sendmail,以实现局域网内部成员能用outlook等程序进行内部email交流,服务器装的是rh9,但是一直搞不定,有人推荐我参考心余的那篇帖子,我照着他写的做了,已经检测到SASL被编译到sendmail中,但是接下来检测不到25端口,显示
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
这是什么原因啊,是不是这个端口被其他配置禁掉了啊,服务器的系统开始不是我搞的,我应该从那方面着手呢,您能否在百忙之余指点我一下,谢谢

 lcqxmu 回复于:2003-08-13 10:23:04
sendmail 要装smtp服务  是如何实现呢

 Suche 回复于:2003-08-13 14:57:14
那个telnet的问题已经解决了,查了半天原来是在将sendmail.mc编译成sendmail.cf时出了错,在sendmail.cf里莫名其妙的出现了几个乱码,去掉之后就好了,现在已经按照心余写的那篇文章通过了测试。但是用outlook发信不能成功,是不是dns也要进行相关设置啊,

 dwq123 回复于:2003-08-13 16:53:47
to:peng老大:
我的sendmail配置好了,用outlook可以收发邮件,但是用foxmail只能收不能发,提示:SMTP server reply:553  5.5.4 .....domain name required for sender adress ,而且我已勾选了SMTP认证,请问是什么原因?

原文转自:http://www.ltesting.net