REDHAT 7.1 sendmail配置FAQ
1、如何获得sendmail:
从REDHAT公司网站http://www.redhat.com或你的安装光盘上获得:sendmail-cf-8.11.0-8.i386.rpm
使用rpm -ihv sendmail-cf-8.11.0-8.i386.rpm安装
从http://www.sendmail.org获得sendmail.8.12.0.tar.gz压缩包,需要自己编译安装。
使用:
tar -zxvf sendmail.8.12.0.tar.gz
cd sendmail.8.12.0
./Build
./Build install
安装
2、它的主要配置文件是什么:
/etc/sendmail.cf
此文件可以是系统自带的,你也可以使用/etc/mail/sendmail.mc文件生成该文件:
m4 /etc/mail/sendmail.mc >/etc/sendmail.cf
3、如何设置SMTP rules来防止他人恶意使用我的SMTP服务器。
可以设置/etc/mail/access文件,只允许内部网络或者指定范围内的主机或IP使用邮件服务器作relay
4、Sendmail缺省状态下是不是可以被别人当作邮件转发服务器用?
缺省状态是不支持open relay,一般它只允许localhost和localdomain通过邮件服务器作转发,可以修改/etc/mail/access文件加入你想允许的人使用,例如在里面加入一行192.168 RELAY就可以允许所有IP以192.168开始的计算机使用你的服务器转发邮件。
5、怎么配置使sendmail使用procmail作为MDA啊?
MDA指的是MAIL DELIVERY AGENT(邮件传输代理),一般sendmail的rpm包都将procmail默认配置为其MDA,如果没有,可以在sendmail.mc文件中加入MAILER(procmail)这一行,然后生成sendmail.cf文件即可。
6、如何设置自动转发。
在用户主目录下建立一个文件.forward,写入转发的地址就行。
7、使用Outlook可以发信到服务器,应该SMTP没有问题,只是不能收信,但已把/etc/xinetd.d/pop3s中disable设为no,可还是不行。
首先要提醒注意的是pop3s不同于pop3,所以你设置该项并没有作用;如果完全安装的话,一般在/etc/xinetd.d下会有一个ipop3文件,这个才是真正应用于pop3 110端口的,如果没有的话,也可以自己创建一个这样的文件。
8、我在mailserver(IP:192.168.1.1)上装了sendmail,机器dns名为mail.net,现在可收发username@mail.net形式的邮件,但不能收发username@192.168.1.1这种形式的邮件,该如何配置?
用IP地址收发邮件只能使用username@[ip_address]的形式,这不是用户习惯不习惯的问题。
否则,即使你的服务器能够接受没有[ ]的格式,其他服务器还是可能不接受的。
你可以在sendmail.cf的DM项修改成
DM[a.b.c.d]
a.b.c.d是你的服务器的IP地址,通过它发出的邮件就是username@[a.b.c.d]的形式了。
9、sendmail 可否建一个邮件组!
如:把几个帐号放在一个组里,我用这个组发邮件,这个组里的成员都可收到相同的邮件?
建个别名就行了,sendmail中的aliases提供了这样的功能。
举例来说吧,如果你想使用xuser组,里面放置两个用户:a和b,那么你可以在/etc/aliases文件中增加一行: xuser:a,b
如果你想增添更多的用户,可以继续在b后添加。
修改完毕之后,使用newaliases命令使修改生效。
10、如何限制用户邮件的最大值为10M?
在sendmail.cf中设置:
# maximum message size
O MaxMessageSize=1000000
11、如何SENDMAIL的发信序列,我想知道有几封信在等待发送
mailq
12、pop3服务是哪个rpm包提供的?
imap
13、我使用的是RedHat 7.1,本机一切正常
telent localhost 25可以,
但是服务器没开25端口,从网络无法访问,
sendmail不是由xinetd控制,从哪里打开25口呢?
RH7.1默认情况SMTP仅绑定127.0.0.1,因此不能从网络访问,要打开SMTP,如下即可:
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
保存!
14、默认情况下的relay规则
在默认情况下,也就是安装完系统(Sendmail服务器)不做任何设置的情况下,则只能在本机上收发邮件,网络上(局域网或Internet)的任何其它主机不能向该SMTP服务器发送邮件,若希望能实现发送,则需满足下面的任何一个条件即可(不需要同时满足):
1. 发送者身份属于“本地或者被允许的发送者”。
2. 接收者身份属于“本地或者被允许的接收者”。
那么什么是“本地/被允许的发送者”呢?
实际上只有一种,就是列在文件/etc/mail/relay-domains(默认安装后无此文件,你可以创建它)或者/etc/mail/access中的域名或者IP地址行,如:
abc.com (/etc/mail/relay-domains)
abc.com relay (/etc/mail/access)
如果在relay-domains/access文件中列出的是域名,则对发送者的IP地址先查找/etc/hosts文件(一般是如此,因为默认情况下对Linux服务器来说,查找DNS是先查找/etc/hosts文件看是否有此IP地址对应的主机域名,如无再做反向DNS查找,如果能够反向查找出来,且查找出来的主机的域部分属于上面两个文件中列出的域名,再对该主机名做正向DNS查找出的IP地址(主机的A记录)与发送者IP地址相同,则允许relay邮件,这表明发送者属于被允许的发送者。
也就是说,先看/etc/host.conf文件中的定义,一般是这样:
order hosts,bind
multi on
其中的order行指明先查/etc/hosts,再找DNS数据库。
如果在/etc/hosts中找不到与发送者IP地址对应的行,则再查找DNS,对发送者IP做反向解析,如果能在反向DNS数据库中找到对应发送者IP的主机记录,且找出来的主机名再从DNS中正向查找若两者一致,则允许relay,跟上面的情况一样,属于第一种被允许的relay规则。
需要注意的是,必须正反向解析都需要能解析且一致才行,否则不允许relay,且会在/var/log/maillog中记录一行警告信息说"may be forged"(可能被伪造的)
但也并非所有记录"may be forged"信息到/var/log/maillog文件中的情况都不允许relay,也有的情况下虽然记录了一条警告消息说"may be forged",但邮件仍然被接收了,是在下面的情况下:
例如: 在B机上/etc/mail/relay-domains中有下面两行
abc.com
yahoo.com
若A向B发送邮件到 someone@yahoo.com . 在B机的/etc/hosts中没有相应的对应于192.168.11.12的记录行。
且在B机(DNS服务器)上不能对IP地址192.168.11.12做反向查找,或者能做反向查找如查找出来为jephe.abc.com但在正向查找(对abc.com域的主DNS数据库中查找对应于主机jephe的A记录)中没有对应于主机jephe的A记录,或者有但找出来的IP地址不是192.168.11.12的话。
但是。接收者是someone@yahoo.com,域yahoo.com在/etc/mail/relay-domains中。则还是允许relay。
但就会记录警告消息may be forged到/var/log/maillog文件中,这种允许属于第二种mail relay规则:
接收者是被允许的接收者。
什么是“本地的或者被允许的接收者”?
这个比较简单,也就是接收者的email地址的域部分被列在/etc/mail/relay-domains或者/etc/mail/access
文件中,如上面的情况,发到@yahoo.com域的任何接收者都被允许接收。
注意一个范围问题,如果发送者的域名(根据前面说的/etc/hosts或者正反向DNS一致的解析)被列在这两个文件中,则该发送者可以发送给任何人的邮件,都能被接收,但若不是这种情况,则只能发送到接收者的email地址的域名在这两个文件中的那些接收者。后者的情况接收对象的范围要比前者小。
再引出另一个值得注意的问题,就是在文件relay-domains或者access中列出的域名既是针对发送者来说的,也是针对接收者而言的。对于发送者来说,检查/etc/hosts,和正反向DNS,对于接收者而言,仅检查接收者邮件地址的域部分。
还有,对于第二种mail relay规则,还多一种情况,即:
若接收者的域名部分被列在/etc/sendmail.cw中,则该接收者也属于本地接收者。
(默认情况下,sendmail.cw是在/etc下,当然你也可以直接更改/etc/sendmail.cf中的sendmail.cw路径)
然后检查别名文件aliases (具体路径靠你的定义)去扩展别名。
15、什么是SMTP协议
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它主要规定基础的电子邮件提交系统怎么传递报文。对于电子邮件系统怎么从用户接受电子邮件,用户接口怎么给用户显示接到的电子邮件,电子邮件如何存储以及电子邮件系统以怎样的频度发送报文等问题却没有作出规定。
在SMTP中,客户机与服务器之间的通信是由可读文本构成的。开始,客户机通过三次握手与服务器(通常是TCP
25端口)建立一个TCP连接,然后等待服务器发送220 READY FOR MAIL。在收到220报文后,客户机发送HELO命令。之后,电子邮件交互以MAIL命令开始,在MAIL命令中,有一个“FROM:”字段,用于在出错是通知发信人。服务器收到MAIL命令后,发送250
OK作为响应,表示一切正常。MAIL命令成功后,客户方就可以将收信人地址告诉服务器,这是用一连串RCPT命令来实现。服务器接收到每个RCPT命令后,发送250
OK作为响应,表示正确接收;或者发送550 No such user here作为响应,表示没有这个用户。客户方的RCPT命令得到正确响应后,就可以DATA命令发送数据。服务器收到DATA命令后,发送354
Start mail input;end with . 给予响应。其中end with .
规定了用于结束电子邮件报文的五个连续字符,即:回车,换行,圆点,回车,换行,这就是为什么用MAIL发送邮件时,最后只含有一个圆点的行表示结束的缘故。
16、sendmail.cf配置文件的主要内容
Local Information
定义有关个人主机的信息
General Macros
定义有关本地网络的宏
Classes
定义用于特殊邮件传输程序的主机名群或域名群
Version Number
标识sendmail.cf文件的版本号
Special Macros
定义由sendmail所用的一些特殊的宏
Option
定义sendmail选项
Message Precedence
定义sendmail所用的各种消息的优先级值
Trusted Users
定义在发送邮件时可忽略发送者地址的用户
Format of Headers
定义sendmail插入的邮件首部格式
Rewriting Rules
定义用于重写邮件地址的规则
Mailers
定义sendmail用来调用邮件传输程序的指令
Ruleset Zero
定义一组称为Ruleset Zero的特殊重写规则
Machine-dependent part of Ruleset Zero
定义与配置相关的Ruleset Zero部分
17、sendmail中所有的内部宏
a
RFCs822格式的原始日期
b
RFCs822格式的当前日期
c
Hop计数
d
UNIX格式的日期
e
SMTP数据项信息
f
“来自”地址的发送者
g
相对于接收者的发送者的地址
h
接收主机
i
队列标识
j
节点的正式域名
l
UNIX的行格式
n
用于错误信息中的名字
o
地址中的操作符集合
p
sendmail的PID
q
默认的发送者地址格式
r
所用的协议
s
发送者主机名
t
当前时间的数值表示
u
接收方用户
v
sendmail的版本号
w
该节点的主机名
x
发送者全名
z
接收者宿主目录
18、sendmail.mc文件中各个指令的意义:
divert(-1)
管理输出字符
dnl
在define后通常会自动产生空格,可以用dnl来删除
include
包含一个文件
define arg
1 arg 2
定义宏argument1设为值argument2
undifine
arg 1
取消arg1的定义
OSTYPE(Linux)
定义操作系统的类型
FEATURE
功能选项,对应到/usr/lib/sendmail-cf/feature里面的文件名称所定义者
MAILER
定义所有必要的邮件递送代理程序,MTA
MASQUERADE_AS
用来处理多主机名称问题
19、sendmail别名
别名是sendmail最重要的功能之一。它在aliases中定义。aliases文件的位置由sendmail.cf中的选项A指定,一般位于/etc目录中。aliases是一个文本文件,其中每一行的格式如下:
alias:recipeint[,recipeint,...]
其中alias为邮件中地址的名字,recipient为邮件目的地址的名字。邮件目的地址名可以有很多,每个之间用逗号符隔开。下面介绍别名的几种主要用法:
◆ 保护登陆帐号
许多网络黑客进攻网络计算机的第一步是获取目标机上合法用户的帐号,而电子邮件帐号一般和登陆帐号相同,这就使黑客有机可乘。但是可以用别名来保护合法用户的帐号。如一位合法用户的登陆帐号为xiaoniao,而他的电子邮件帐号可以是aaabbb。只要在别名文件中加入“aaabbb:xiaoniao”就可以达到这一目的。
◆ 电子邮件转发
如果想要将发给xiaoniao用户的电子邮件自动转发给root用户,只需在别名文件中加入“xiaoniao:root”。又如用户xiaoniao离开这个单位。从安全角度上讲应该将他的用户帐号删除。但是由于他不可能马上将新的电子邮件帐号通知所有人,所以希望将他原来的电子邮件帐号保留一段时间。这只要在别名文件中加入“xiaoniao:新的电子邮件地址”。
◆ 邮件列表的实现
别名最重要的功能就是实现邮件列表。通过它可以实现填写一个接收者地址而将信发给许多人。例如在主机上设置一个邮件列表xn_group,包括xiaoniao,lyong,twang
和lwang。只需在别名文件中加入:
xn_group:xiaoniao,lyong,twang,lwang
owner_xn_group:xiaoniao
当接收者是xn_group时,信会自动发给xiaoniao,lyong,twang和lwang。当发送邮件给xn_group是如果出错,将把错误信息发给xiaoniao。