mail-f~/mbox查看home目录下邮箱内容。
7 ☆uuencode/uudecode
用mail发附件也是可行,要用到uuencodeanduudecode命令进行编码。
编码:
uuencode[file]name
uuencodehello>hello.uue
defaultinputisstdin;se
defaultoutputisstdout.
解码:
uudecode[-ooutfile]name
uudecodehello.uue
可以用-o选项输出另外一个文件名。
#uuencode~/.bashrc-obashrc|mail-s'testuuencode'test@
8 ☆system-switch-mail
切换sendmail和postfix
9 ☆sendmail
sendmail提供SMTP服务
10 ☆sendmail安装
如果你在安装RHEL5的时候,选择了E-MAIL服务,sendmail就已经安装在LINUX系统中了,并且已经作了一些最基本的设置。
sendmail-8.13.8-2.el5.i386.rpm(第一张光盘,默认已装)sendmail软件包是sendmail服务器程序的安装包,是最重要的软件包.
m4-1.4.5-3.el5.1.i386.rpm(第一张光盘,默认已装)m4软件包中包括了配置sendmail服务器的必要工具.
procmail-3.22-17.1.i386.rpm(第一张光盘,默认已装)
sendmail-cf-8.13.8-2.el5.i386.rpm(第二张光盘,默认未装)sendmail-cf软件包中包括了重新配置sendmail服务器的必要配置文件.
sendmail-doc-8.13.8-2.el5.i386.rpm(第三张光盘,默认未装)sendmail-doc软件包中包括了sendmail服务器的说明文档.
sendmail-devel-8.13.8-2.el5.i386.rpm(第三张光盘,默认未装)
管理员需要手动安装以下两个包,才能配置sendmail服务器:
#rpm-ivhsendmail-cf-8.13.8-2.el5.i386.rpmsendmail-doc-8.13.8-2.el5.i386.rpm
设置运行级别:
#chkconfig--level35sendmailon
11 ☆sendmail使用前配置
sendmail的DNS设置
当sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给那一个服务器,这是通过DNS服务实现的。
例如,有一封邮件的目标地址是panda@,那么,sendmail首先确定这个地址是用户名(panda)+机器名()的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。
先用ifconfig查看服务器的ip,再把ip写入:
#vi/etc/resolv.conf
;generatedby/sbin/dhclient-script
search
nameserver192.168.152.128
确认/etc/hosts,
#vi/etc/hosts
#Donotremovethefollowingline,orvariousprograms
#thatrequirenetworkfunctionalitywillfail.
127.0.0.1pandapanda
然后在/etc/named.conf中加入
zone""IN{
typemaster;
file".zone";
};
最后生成/var/named/chroot/var/named/.zone
$TTL86400
@INSOA..(
2006062700;Serial
28800;Refresh
14400;Retry
3600000;Expire
86400);Minimum
INNSpanda
INMX10panda
pandaINA192.168.152.128
重启DNS.#servicenamedrestart
DNS数据中,与电子邮件相关的是MX记录,这可以在查询DNS时设置查询类型为mx来得到:
[root@panda~]#nslookup
>
Server:
192.168.152.128
Address:
192.168.152.128#53
Name:
Address:
192.168.152.128
>setq=mx
>
Server:
192.168.152.128
Address:
192.168.152.128#53
mailexchanger=10.
在一般的情况下,mx交换器会自动把信件内容转交给目标主机,不过,也存在这样的情况,目标主机(比如)可能并不存在,或者不执行smtp服务,而是由其mx交换器来执行信件的管理,这时候,最终的信件将保存在mx机器上,直到用户来察看它。
如果DNS查询无法找出对某个地址的MX记录(通常因为对方没有信件交换主机),那么sendmail将是试图直接与对方的主机(来自邮件地址)对话并且发送邮件。
例如,test@在DNS中没有对应的MX记录,因此sendmail在确定MX交换器失败后,将从DNS取得对方的IP地址并直接和对方对话试图发送邮件。
sendmail发送邮件时,如果经过设定的时间后仍然未能将信件投递到目的主机,它将返回一个错误信息并且休息一段时间,然后重新试图投递,如果连续多次失败,sendmail最终将放弃投递并将错误信息投递给postmaster用户。
在许多机器上,postmaster用户是root用户的一个别名(参考下面关于别名的内容),你应该将它设置为邮件的实际管理员的用户名。
例如,你可能会用mail程序向某个地址这样发信:
$mailsomeone@
To:
other@
Subject:
testmail
test
someone@必须准确到某台主机上
那么,当sendmail发信的时候,它是向someone@发信而不是other@。
相应地,如果你想向两个人发信,例如你在outlook里面写上:
"投递给user1@,抄送user2@",那么sendmail应该怎么做?
直接同时向两个地址发信吗?
否,它试图构造两个包装(称为信封),每个包装上只列出一个投递地址,各投递一次。
虽然邮件正文的头部仍然包含两个地址,但是sendmail不会看它。
配置文件
/etc/sysconfig/sendmail
DAEMON=yes
QUEUE=1h
每一个小时传递队列中的文件
12 ☆sendmail防火墙
iptables-IINPUT-ptcp--dport25-jACCEPT
13 ☆sendmail启动
启动用:
#servicesendmailstart;#/etc/init.d/sendmailstart;
或#sendmail-bd-q30m该命令以后台进程方式(-bd)运行,并使其每隔30分钟(-q30m)轮询一次未发送邮件队列,检查是否有新邮件。
-q1h表示每隔一个小时发送一次邮件
停止用:
#servicesendmailstop;#/etc/init.d/sendmailstop;#servicesendmailrestart;
14 ☆sendmail主要配置文件
#ls/etc/mail/
accesshelpfileMakefilesubmit.mc
access.dblocal-host-namessendmail.cftrusted-users
domaintablemailertablesendmail.mcvirtusertable
domaintable.dbmailertable.dbsubmit.cfvirtusertable.db
#ls/etc/aliases*
/etc/aliases/etc/aliases.db
在/etc/mail目录中保存了sendmail服务器使用的所有配置文件,文件后缀是".cf"的是服务器配置文件,文件后缀是".db"的是服务器使用的数据库文件,下面是常用的文件说明:
配置文件sendmail.cf和sendmail.mc
sendmail服务器的主配置文件是sendmail.cf,该文件的格式是公认的难于理解,因此即使是有经验的管理员也会避免直接编辑此文件,sendmail开发人员为
sendmail管理者提供了更加容易理解和配置的sendmail.mc文件。
一般情况下,系统管理员对sendmail.mc文件的内容进行设置后,再使用m4命令由
sendmail.mc文件的内容生成sendmail.cf文件。
但由于sendmail.mc文件的配置依然有一定的难度,因此在第一次对sendmail.mc文件进行修改前,最好先将
该文件进行备份,以便配置错误时能够恢复默认配置,操作流程如下:
#cd/etc/mail(进入主配置文件目录)
#cpsendmail.mcsendmail.mc-(备份配置文件sendmail.mc)
#visendmail.mc(编缉配置文件sendmail.mc)
#m4sendmail.mc>sendmail.cf(利用m4命令重新生成主配置文件sendmail.cf)
#servicesendmailrestart(重启sendmail服务使配置生效)
注意:
sendmail服务器在运行时只读取sendmail.cf文件中的设置,因此每次对sendmail.mc文件进行修改后都需要使用m4命令生成新的sendmail.cf文件,
而且m4命令必须在/etc/mail/目录中执行。
数据库配置文件和数据库文件
在sendmail服务器中除了sendmail.cf主配置文件以外,还使用了许多数据库文件辅助进行sendmail服务器的配置。
在/etc/mail目录中所有扩展名为".db"的
文件都是数据库文件,这些数据库文件的格式对于用户是不可读的。
每个".db"数据库文件在同一目录下都对应有同名的无扩展名文件,例如对于access.db
文件,对应有名为access的文本文件,access文件是用于系统管理员进行管理的,称为数据库配置文件。
当管理员在数据库配置文件(文本文件)中进行了相
应的设置后,需要使用makemap命令将数据库配置文件生成".db"的数据库文件,因为sendmail服务器只能够识别".db"的数据库文件中的配置内容。
操
作流程如下:
#cd/etc/mail(进入数据库文件目录)
#viaccess(编辑数据库配置文件)
#makemaphashaccess.db#servicesendmailrestart(重启sendmail服务让配置生效)
☆sendmail.mc
sendmail.mc文件中指令的意义:
指令
意义
divert(-1)
删除结果文件中的垃圾
divert(0)
保存通常的配置文件
Dnl
注解
Include
包含一个文件
definearg1arg2
定义宏arg1设置为arg2
undefinearg1
取消arg1的定义
OSTYPE('Linux')
定义操作系统类型
FEATURE
功能选项,对应/usr/lib/sendmail-cf/feature里定义的文件名称
MAILER
定义所有必要的邮件投递代理程序
ASQUERADE_AS
用来处理多主机名称问题
divert(-1)dnl
dnl#
dnl#Thisisthesendmailmacroconfigfileform4.Ifyoumakechangesto
dnl#/etc/mail/sendmail.mc,youwillneedtoregeneratethe
dnl#/etc/mail/sendmail.cffilebyconfirmingthatthesendmail-cfpackageis
dnl#installedandthenperforminga
dnl#make-C/etc/mail
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setupforlinux')dnl
OSTYPE(`linux')dnl//设定使用的操作系统类别
dnl#Donotadvertizesendmailversion.
dnldefine(`confSMTP_LOGIN_MSG',`$jSendmail;$b')dnl
dnl#defaultlogginglevelis9,youmightwanttosetithigherto
dnl#debugtheconfiguration
dnldefine(`confLOG_LEVEL',`9')dnl
dnl#Uncommentandeditthefollowinglineifyouroutgoingmailneedsto
dnl#besentoutthroughanexternalmailserver:
dnldefine(`SMART_HOST',`smtp.your.provider')dnl
define(`confDEF_USER_ID',``8:
12'')dnl
dnldefine(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT',`1m')dnl
define(`confTRY_NULL_MX_LIST',`True')dnl
define(`confDONT_PROBE_INTERFACES',`True')dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE',`/etc/aliases')dnl
define(`STATUS_FILE',`/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX',`2000000')dnl
define(`confUSERDB_SPEC',`/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS',`authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS',