Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152303
  • 博文数量: 39
  • 博客积分: 2020
  • 博客等级: 大尉
  • 技术积分: 281
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-10 11:24
文章分类

全部博文(39)

文章存档

2010年(39)

我的朋友

分类:

2010-09-10 14:13:06

电子邮件系统的组成 5部分:MTA,MSA,MUA,MDA,MAA。
1、 邮件用户代理(Mail User Agent,MUA)MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。最常用的MUA有:linux中的 mail,elm,pine等。Windows的outlook ,foxmail等。
2、邮件代理器(Mail Transfer Agent,MTA)MTA负责邮件的存储和转发(store and forward)。MTA监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接受到的邮件进行缓冲。在 linux下的MTA程序有:sendmail,qmail等。
3、邮件提交代理(Mail Submmission Agent,MSA)MSA负责消息有MTA发送之前必须完成的所有准备工作和错误检测,MSA就像在MUA和MTA之间插入了一个头脑清醒的检测员对所 有的主机名,从MUA得到的信息头等信息进行检测。
4、邮件投递代理(Mail Ddlivery Agent,MDA)MDA从MTA接收邮件并进行适当的本地投递,可以投递个一个本地用户,一个邮件列表,一个文件或是一个程序。Linux下常用的 MDA是mail.local,smrsh和procmail()。
5、邮件访问代理(Mail Access Agent,MAA)MAA用于将用户连接到系统邮件库,使用POP或IMAP协议收取邮件。Linux下常用的MAA有UW-IMAP,Cyrus- IMAP,COURIER-IMAP等邮件中继:就是当邮件向目的地址传输时,一旦源地址和目的地址都不是本地系统,那么本地系统就是邮件的中继(中转 站)。

  MUA 使用者透过这个程序与邮件服务器沟通,包括收信(以 POP3 连接收信服务器程序 imapd)或寄信(以SMTP 连接 MTA),例如: Outlook Express……等。

  MTA 使用 SMTP 通讯协议将信件传递到不同邮件主机上面,例如: sendmail, postfix, Qmail……等。

  MSA 是新版 sendmail 发展给 SSMTP 进行 TLS/SSL 联机的 client 端代理器。

  MDA 收到信后将信件分配到不同使用者信箱内,算是 MTA 的一个子系统,譬如 BBS 从定义上来说也算是 MDA( BBS 功能复杂,当然不仅仅是 MDA),有些 MDA 被设计来进行滤信动作,它们必须在 local 端运作,因此又被称为 LDA,例如: procmail……等。

  MailBox 尚未被使用者下载的邮件,会暂存在服务器的硬盘空间里,称之为信箱。所有使用者信箱的总合必须约等于该分割区总容量的一半,以避免造成信箱尚有空间但邮件 系统却无法运作的现象。

  Mail Gateway 是一种特殊的邮件服务器,通常扮演代理器的角色,负责统筹某机构内所有信件的收发,并分配邮件给下属的邮件服务器们,透过这个机制能够加速邮件的交换,并 且能够进行一致的滤信控制。

  Sendmail的配置文件

  /etc/mail/sendmail.cf :Sendmail的主配置文件;

  /etc/mail/access :中继访问控制;

  /etc/mail/domaintable ;域名映射;

  /etc/mail/local-host-names ;本地主机别名;

  /etc/mail/mailertable :为特定的域指定特殊的路由规则;

  /etc/mail/virtusertable :虚拟域配置。

  中继的配置

  是指一台服务器接受并传递源地址和目的地址都不是本服务器的邮件。

  在两个文件中进行设置:

  /etc/mail/relay-domains

  /etc/mail/access。

  下面是安装部分

  1. 保障DNS服务器正常解析,有MX有对应的A记录等

  2. 安装sendmail-8.12.11-4.RHEL3.1+sendmail-cf-8.13.1-2+cyrus-sasl,并增加SMTP认证

  cd /etc/mail ; vi sendmail.mc

  #找到下面这一段: AEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') dnl

  #将他改成 AEMON_OPTIONS(`Port=25,Addr=0.0.0.0, Name=MSA')dnl

  #将下面两前前面的dnl去掉

  dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

  dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

  #在上面两行前面增加一行,增加多队列处理能力

  define(QUEUE_DIR, `/var/spool/mqueue/q*') #记得在/var/spool/mqueue/目录下建立q1,q2,q3,q4,q5,q6目录!

  #编辑完成后,运行m4命令生成sendmail.cf文件

  m4 sendmail.mc >mail.cf

  #如果m4报Cannot open /usr/share/sendmail-cf/m4/cf.m4错,就看看sendmail-cf这个包安装了没!

  cp mail.cf sendmail.cf

  #另外在rc.local中增加

  /usr/sbin/saslauthd -a pam #如果没有运行过,可以手工运行一次.

  3.安装rpm -ivh /app/imap-2002d-11.i386.rpmvi /etc/xinetd.d/ipop3

  # 找到下面这一行:

  disable = yes

  # 将他改成

  disable = no

  #最后重启:

  /etc/rc.d/init.d/xinetd restart

  #如果用的是dovecot,那么需要在安装RPM包后,编辑/etc/dovecot.conf

  找到这一行

  #protocols = imap imaps

  增加一行

  protocols = imap imaps pop3 pop3s

  另外在/etc/rc.local中增加

  /usr/sbin/saslauthd -a pam

  4.其它设置:

  vi local-host-names #在这个文件里面添加你的邮件服务器域名,如zhangjianfeng.com

  vi /etc/mail/access #预设情况下有启用的 IP

  localhost.localdomain RELAY

  localhost RELAY

  127.0.0.1 RELAY

  # 想要开放权限的 IP 与网域

  192.168.0           RELAY

  140.116.44.125         RELAY

  # 挡掉的 IP、主机名称与 E-mail

  h8h.com       DISCARD

  192.168.1.100    DISCARD

  test@testing.domain.name  REJECT

  # 储存后离开,并运行make access.db (或makemap hash access.db

  #编辑别名设定档:

  vi /etc/aliases

  新加入这一行在 aliases 的最底下:

  groupname: st001,st002,st003,st004.st005,st006,st007….. #设置一个群用户,便于群发

  groupname: :include:/etc/mail/student9213 #读取所有群用户的资料在student9213文件中,利于管理

  vbird: vbird,vbird@vbird.adsldns.org #设置一个转发帐户,一封邮件在发给vbird的同时,会抄一份至vbird@vbird.adsldns.org

  #制作数据库 /etc/aliases.db ,运行命令newaliases

  在 Red Hat 的预设条件中,在 /var/spool/mqueue 当中的信件会每隔 60 分钟由 Sendmail 尝试重新传送一次到目的地去!这个尝试的时间是可以改变的!可以利用 sendmail 的指令或者直接修改 /etc/sysconfig/sendmail 里面的 『QUEUE=时间』来修订!例如,如果你想要让 Sendmail 每隔 30 分钟就帮你尝试传送 /var/spool/mqueue 里面的未寄出的信件时,那么就将 /etc/sysconfig/sendmail 这个档案里面的『QUEUE=1h 』改成『QUEUE=30m 』即可!

  ————————-

  mail使用相关

  ————————-

  ++给某用户发邮件

  mail user@email.domain.name

  Subject: This is a test mail

  There are writing area!

  You can't use the Up/Down button in this form…

  you can finish with "."

  . <==这个『.』就是结束符号!要正常离开编辑画面就是 . !

  Cc: <==这就是副本!

  ++用 mail 寄出纯文本文件

  mail -s '这里可以接邮件标题' 这里是邮件收件者 < 文件名称

  范例: mail -s 'This is a test mail' vbird

  ++sendmail中,可不可以把一个用户的信转发的同时保存副本

  经理想把发到eee@iie.com的信都转到eee@sohu.com去。但同时在eee@iee.com里保存一封!@

  edit $HOME/.forward

  address1 #这个是要转发的地址

  address2\ #这個 address2\ 是自己,自己要加 \ 的原因是避免 loop

  ++刪除mail

  mail -u username

  del 邮件编号

  ++显示信件队列

  mailq -v

  ++显示邮件在 Mailer 中的统计状态

  mailstats

  ++立即发送队列的邮件

  sendmail -q

  ++立即处理队列中alpha用户的邮件  

  sendmail -qS alpha

  ++邮件别名、组建立等

  vi /etc/aliases ;newalises

  ++限制最大邮件

  vi /etc/sendmail.cf

  # maximum message size

  O MaxMessageSize=20000000 (注:20M)

  注:sendmail模块里不能判断有无附档,只能判断整个邮件大小

  ++限制最大的群发数目

  vi /etc/sendmail.cf

  # maximum number of recipients per SMTP envelope

  O MaxRecipientsPerMessage=100 (注:100个)

  ++控制sendmail发送邮件列表的时间设置

  vi /etc/sysconfig/sendmail

  QUEUE=1h表示1小时,1m表示1分钟,自己根据需要调整吧.

  ++mailstats邮寄状态查询命令

  M :

  msgsfr:发送的邮件数量。

  bytes_from:邮件容量

  megsto:收到邮件的数量。

  bytes_to:同上

  msgsrej:邮件deny的次数。

  msgsdis:邮件discard的次数。

  Mailer :esmtp对外邮件 ,local本地邮件 。

  ++在Sendmail中添加RBL功能

  需要对sendmail.mc添加以下内容:

  FEATURE(`dnsbl",`relays.ordb.org",`″Email blocked using ORDB.org - see ″")  

  最后执行"m4 sendmail.mc>sendmail.cf"

  ++sendmail启动慢

  在hosts里面加入主机名的FQDN名称

  ++清除队列邮件

  rm /var/spool/mqueue/xxxx

  ++修改telnet mailserver 25时得到的邮件服务器FQDN信息

  修改/etc/sysconfig/network里的hostname

  ++# my official domain name

  ++#… define this only if sendmail cannot automatically determine your domain

  Dj$w.Foo.COM #其中$w指主机名部分(no domain name)

  ++定义aliases档案位置

  0 AliasFile=/etc/mail/aliases

  ++ minimum number of free blocks on filesystem

  O MinFreeBlocks=100

  ++ maximum hop count

  #O MaxHopCount=25

  ++ send to me too, even in an alias expansion?

  #O MeToo=True

  ++ queue directory

  O QueueDirectory=/var/spool/mqueue

  ++ maximum number of children we allow at one time

  #O MaxDaemonChildren=0 #sendmail预设可以同时启动12个,表示可以同时收12封信

  ++sendmail仅做转发服务器设置

  1).去掉local-host-names中相应域名

  2).编辑mailertable,加入类似下行

  zhangjianfeng.com relay:[192.168.0.200] #192.168.0.200即为后端邮件服务器

  3).vi access,add following line.

  zhangjianfeng.com RELAY

  ++smarthost 邮件转寄设置方法

  vi /etc/mail/sendmail.cf

  找到DS

  改为DS[*.*.*.*] 注:填入要转寄的smarthost地址

  测试服务器是否已经限制了第三方转发:正确的Relay test result应该是

  All tests performed, no relays accepted.

阅读(644) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~