sendmail 配置与管理

更新时间:2023-05-20 00:37:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

sendmail 配置与管理

安装sendmail→本地邮件→外部邮件→配置详解



安装

sendmail有三个软件包需要安装(RedHat 9.0)

sendmail-8.12.8-4

sendmail-cf-8.12.8-4

sendmail-doc-8.12.8-4(说明文件,可以不安装)

使用命令

#rpm -qa | grep sendmail 查看安装了那些sendmail软件包

如果没有安装则要到安装光盘或者从网上下载

/etc/mail sendmail主目录

(sendmail.cf是主配置文件,但是主配置文件语法比较难懂,所以我们可以修改sendmail.mc文件,然后用m4宏处理程序来生成所需的sendmail.cf文件.)

安装完成后使用命令启动sendmail服务.

#service sendmail start 启动sendmail服务

#/etc/init.d/sendmail start 同样可以启动服务

#service sendmail restart 重启服务



#netstat -an 查看端口状态,如果服务正常启动则会监听25号端口.

也可以使用telnet命令尝试登陆本地的25端口查看服务运行情况.

#telnet 127.0.0.1 25 使用telnet登陆本机25端口

Escape character is '^]'.
220 linux9.0 ESMTP Sendmail 8.12.8/8.12.8; Tue, 10 Oct 2006 15:33:22 +0800 返回服务器系统和时间等信息
ehlo hello 与服务器打招呼,返回以下服务器信息,说明服务启动正常.

250-linux9.0 Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
使用命令quit退出



本地邮件

默认情况下安装好sendmail并启动后就可以实现本地用户的邮件收发.

首先建立一个帐户

#useradd test 创建test用户并修改密码,然后登陆test用户,使用test用户发送邮件

#mail 查看有无新邮件

#mail root 向root用户发送一封新邮件

subject:hello 邮件主题为hello

hello root 输入邮件内容,输入完成后Ctrl+d结束输入

Cc: 抄送,可以是自己,也可以省略.

邮件发送完成,用root用户登陆系统,然后用mail命令查看新邮件

#mail 输入mail命令提示以下信息

Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root@ linux9.0 Tue Oct 10 16:00 16/536 "hello"


输入编号1可以查看信件的内容,如果有多封邮件邮件编号以此类推.

后面是 发件人,邮件接收时间,邮件大小,邮件主题 等内容.

其中/var/spool/mail/root是root用户的邮箱目录,用户查看过的信件会保存在用户主目录下的mbox文件中

输入q退出.

可以把一个文档中的内容当作一封邮件
发送出去

#mail -s 'hello' root < test.txt

如果需要查看已经阅读过的邮件可以用命令:

#mail -f ~/mbox

管理员可以查看其他用户的邮件,使用命令:

#mail -u test



限制邮件空间:

sendmail 配置与管理

因为电子邮件的暂存空间是位于/var/spool/mail目录下的,所以只需通过磁盘配额设定每一个邮件帐户在此目录下能使用的最大空间即可。



外部邮件

① 首先要确定主机名称正确,如果主机名称不匹配会出现意外错误.

(修改主机名称后需要重新启动计算机或者用hostname命令修改然后重新登陆才能生效)

修改以下四个文件:

/etc/sysconfig/network-scripts/ifcfg-eth0 修改网卡属性(网卡名,IP,子网掩码,IP获得方式,网关等信息)

/etc/sysconfig/network 修改主机名

/etc/resolv.conf DNS指向

/etc/hosts hosts文件(IP和主机名对应关系)

修改完成后重新启动服务

#service network restart



② 安装POP服务包,rethat默认安装了sendmail但是没有安装pop,所以如果要对外提供邮件服务必须要安装pop软件包,否则使用outlook等软件只能发邮件无法收取邮件.

#rpm -qa |grep imap 检查是否安装了pop服务

#rpm ivh imap-2005a-18.i386.rpm 从安装盘安装或者从网上下载RPM包



打开自启动服务管理

#ntsysv

然后选择以下四项

imap
imaps

ipop2

ipop3

重新启动超级守护进程

#service xinetd restart

POP的设置完成



③编辑/etc/mail/sendmail.mc

#vi /etc/mail/sendmail.mc

将下面行前面添加dnl 注释掉

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, )dnl

8.0以前版本redhat中的sendmail要将cwlocalhost这一行修改为(为主机名)

修改完成后保存退出,然后使用命令编译为sendmail.cf主配置文件

#m4 /etc/mailsenmail.mc > /etc/mail/senmail.cf

重新启动sendmail服务

#service sendmail restart



④设置DNS

首先确定DNS服务器安装完成并且运行正常(具体过程请参看linux下的DNS管理那篇文章)

打开主配置文件,添加正向区域和反向区域(本例为域)

#vi /etc/named.conf

zone "" IN {
type master;
file "test.zone";

};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.local";

};
修改区域文件:

#vi /ar/named/test.zone

mail IN MX 10 192.168.1.10
mail IN A 192.168.1.10
pop3 IN CNAME .
smtp IN CNAME .
同样建立反向区域文件.

然后重启动服务

#service named restart

或者重新加载配置文件

#rndc reload



在要收发邮件的计算机上要将DNS指向Linux的DNS.

现在就可以使用OUTLOOK等软件收发邮件了.

打开OUTLOOK

工具->帐户->邮件->添加->
;邮件(第一次使用时省略)

显示名:test(可自定义)

电子邮件地址:test@

POP3服务器:

SMTP服务器:


sendmail 配置与管理

帐户名:test 密码:test帐户密码

完成后在帐户属性中的服务器选项中"我的服务器需要身份验证"勾选.

OUTLOOK配置完成,可以收发邮件了.



配置详解[整理]

现在SendMail已经可以接收来自外部的连接了.我们还需要设定SendMail允许接收的域名.这个可以

在/etc/mail/local-host-names文件中设定.就把域名输入进去就可以了:

#vi /etc/mail/local-host-names

把允许的域名添加进去就可以。



想要其他的外部来用OUTLOOK等登陆邮件服务器收发邮件可以编辑/etc/mail/access文件中加入允许的域或者IP,

保存后运行make access.db 的命令来生成access.db文件.SendMail用它来判断允许那些主机通过你的e-mail服务

器来传递邮件.而且这样还可以通过设定子网(例如:192.168)来限制该域.但你要注意,这样设定就对外开放了,

可能会有人发大量的垃圾信件来攻击你的系统.



安装完成后为确保系统安全,还需调整一些目录的权限。可参考sendmail源码目录下
sendmail/SECURITY文档。
# chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir}
# chmod 0640 /etc/mail/*.{db,pag,dir}
# chmod 0640 /etc/mail/statistics /var/log/sendmail.st
# chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid
-r-xr-sr-x root smmsp ... /PATH/TO/sendmail
drwxrwx--- smmsp smmsp ... /var/spool/clientmqueue
drwx------ root wheel ... /var/spool/mqueue
-r--r--r-- root wheel ... /etc/mail/sendmail.cf
-r--r--r-- root wheel ... /etc/mail/submit.cf




aliases 别名数据库设置
test: test1,test2,test3 设置test群组别名,test不是一个实际的用户,只是一个别名。发给
test的信,test1,2,3都可收到。
test: test,testbak 在testbak邮箱中备份test的邮件。
test: test,test@ 远程邮件备份,原理同上。
test: :include: /etc/mail/userlist 使用用户列表设置群组。
userlist格式如下:
test1, \
test2, \
test3, \
test4
关于系统预设aliases,由于sendmail预设用mailer-daemon and postmaster作为资料传送者,
或邮件退回的帐号,但系统实际没有这两个帐号,所以要如下设置别名。
mailer-daemon: postmaster
postmaster: root
设置完成后不要忘了用newaliases命令生成数据库。



~/.forward文件配置
其实该文档的作用和aliases数据库的作差不多啦,都是配置别名,做邮件转发的。因为alises
只能由管理员控制,个人用户不能修改,所以就可以在个人的目录下建立一个转寄文档。以
设置个人的邮件转寄列表。文档格式如下:
test
test1
test2
test3
and os on
但由于个人用户安全意识差,如果设置不当会有安全漏洞,不建议使用。



access访问控制列表设置

92.168 RELAY
OK
REJECT
550 SORRY,WE DON'T ALLOW SPAMMERS HERE

sendmail 配置与管理

DISCARD
Ok--远程主机可以向你的邮件服务器发送邮件;
RELAY--允许中转;
REJECT--不能向你的邮件服务器发邮件和不能中转;
DISCARD--发来的邮件将被丢弃,同时并不向发送者返回错误信息。
nnn text-- 发来的邮件将被丢弃,但sendmail将会向发送者返回nnn确定的smtp代码和text
变量确定的文本描述。
设置完成后要用makemap hash access.db < access命令生成数据库。

mailq邮件队列查询命令。
Q-ID 邮件id号。
Size 邮件容量。
Q-Time 邮件进入队列(也就是/var/spool/mqueue目录)的时间和不能邮寄的原因。
Sender/Recipient 发信和收信人的邮箱地址。

mailstats邮寄状态查询命令,可查询sendmail运行作至今邮件收发总计资料。
M :
msgsfr:发送的邮件数量。
bytes_from:邮件容量
megsto:收到邮件的数量。
bytes_to:同上
msgsrej:邮件deny的次数。
msgsdis:邮件discard的次数。
Mailer :esmtp对外邮件 ,local本地邮件 。




sendmail宏定义说明 (sendmail.mc)
divert(n) 为m4定义一个缓冲动作,当n=-1时缓冲被删除,n=0时开始一个新缓冲
OSTYPE 定义宏所使用的操作系统,该宏允许m4程序增加同相关操作系统相关的
文件
Domain 定义MTA将使用哪些域来传输邮件
Feature 定义配置文件中使用的一个特定的功能集
Define 定义配置文件中的一个特定的选项值
MASQUERADE_AS 定义sendmail来应答邮件的其它主机

MAILER 定义sendmail使用的邮件传输方法
dnl 注释

完成sendmail.mc文档的编写后就可以用m4程序生成正式的sendmail.cf配置文档。语法如
下:
# m4 sendmail.mc >; sendmail.cf



本文来源:https://www.bwwdw.com/article/bbq4.html

Top