服务器今日报价
·30万条报价,12万多款产品!

IT热点
  • 电脑硬件
  • 手机
  • MP4
  • 品牌机
  • 办公产品
  • 投影机
  • 服务器
  • 奥林巴斯
  • 尼康
  • 佳能
  • 阿尔卡特
  • 索尼
  • 微星
  • 七彩虹
  • 笔记本
  • 数码相机
  • 数码摄像机
  • 惠普
  • 戴尔
  • 联想
  • 诺基亚
  • 摩托罗拉
  • 索尼爱立信
  • LG
  • 西门子
  • 飞利浦
  • 华硕
  • 硕泰克
  • - - - - - - - - - -
    首页 >> 服务器 >> 服务器软件
    Linux开放源代码邮件服务器软件:Exim [服务器软件]
    IT.com.cn(IT世界网)
    2007-2-9 14:26:00 文/
      Exim是基于GPL协议的开放源代码软件,由英国剑桥大学的Philip Hazel开发,目前最新版4.24。Exim是一个MTA(Message Transfer Agent),即消息传输代理,负责邮件的路由、转发和投递。Exim被作者设计成可运行于绝大多数的类Unix系统上,包括Solaris,AIX,Linux等。

      Exim与其它开源的MTA(QMail、Postfix)相比,最大的特点是配置极其灵活。Exim的配置文件也是一个文本文件,但它支持一种称为String Expansion的技术。String Expansion可以理解为一种简单的脚本语言,能够执行诸如条件判断、字符串转换等功能。当然,Exim基本的功能也是非常丰富的。

      一、Exim的工作模式

      在Exim中,有两种称为Driver的元素:Router和Transport。Router对一个邮件地址进行操作,决定如何投递,即交给哪个 Transport,或对地址进行转换,如通过Alias文件。Transport将邮件从Exim的队列中投递到目的地。Exim中存在两种类型的 Transport:本地和远程。邮件被Router成功处理后交给Transport。如果一封邮件有多个收件人,它可能被同时多个不同的 Transport处理。

      每个地址都会被依次被配置的各个Router处理,直到其中一个Router接受或被弹回。每个Router都被配置成必须满足一定的前置条件,比如域名必须符合某特定特征,否则就是忽略。每个Router必须指定一个Transport,这样当Router运行成功时,就把邮件交给此 Transport来投递。下面的图描述了Exim的投递过程。

      [myimg]upload/routing.png[/myimg]

      Exim的Router有:

      1. accept: 通常用来处理系统用户和自动回复等
      2. dnslookup:根据收件人地址中域名的DNS记录(MX),决定邮件如何路由。
      3. ipliteral:对域名是纯IP地址的邮件地址(如my@192.168.0.1)进行路由
      4. iplookup:剑桥大学专用的
      5. manualroute:这是Exim中最强大的Router。管理人员可以根据若干种不同的条件决定如何路由邮件。
      6. queryprogram:顾名思义,这是根据某一程序运行的结果来决定如何路由邮件。
      7. redirect:邮件重定向,比如根据.alias文件。

      Exim的Transport有:

      1. appendfile:这是一个本地Transport,将邮件添加到本地的一个文件或目录中。Exim支持至少三种格式的邮箱:maildir、mbx和mailstore。
      2. autoreply:自动回复
      3. pipe:由程序来处理邮件的投递。
      4. smtp:这是远程Transport,通过SMTP协议与远程主机通讯,来完成邮件的投递。
      5. lmtp:使用LMTP协议完成邮件的投递。

      为了更好地说明,这里列出作者所在公司使用的Exim的配置文件片断。
      Router配置

      #系统用户
      #先处理操作系统的系统用户,比如mail,root等。
      #Check_local_user指令让Exim去检测是否为系统用户,如果是,
      #则将邮件交给名为local_transport的Transport投递
      localuser:
      driver = accept
      check_local_user
      transport = local_delivery

      #自动回复
      #前置条件是:发件人不是形如-request@, owner-且收件人属性中定义了mailReplyText

      gen_auto_reply:
      driver = accept
      transport = auto_reply
      senders = !^.*-request@.* : !^owner-.*@.* : \
      !^postmaster@.* : ! ^listmaster@.* : \
      !^mailer-daemon@.*
      condition = ${if eq {${extract {mailReplyText}{RCPT_USER_DATA} }} \
      {} {no}{yes}}
      unseen

      #本机邮件
      #作者所在的单位采用了单域多机的模式,即用分散的机器存储同一个域名下的用户的邮件。
      #前置条件是:收件人属性中定义的mailHost值与当前机器的名字相同
      in_this_host:
      driver = accept
      transport = save_this_host_maildir
      condition = ${if eq {TBOX} {${extract {mailHost} \
      {RCPT_USER_DATA}}} {yes}{no}}

      #同域,非本机邮件
      #前置机件是:域名在local_domains列表中。Local_domains是一个域名列表,在配置文件前面定义的。
      #
      not_in_this_host_but_in_this_domain:
      driver = manualroute
      domains = +local_domains
      route_data = ${extract {mailHost} {RCPT_USER_DATA}}
      transport = redirect_to_real_server

      #邮件监控
      #前置条件:发件人的域名在monitored_domains列表中。
      #
      save_a_copy_of_outgoing_mail:
      driver = accept
      domains = +monitored_domains
      transport = copy_outgoing
      unseen

      #外域邮件
      #前置条件:收件人的域名不在local_domains域名列表中
      #
      not_in_this_host_and_not_in_this_domain:
      driver = manualroute
      domains = !+local_domains
      transport = redirect_to_hq_mailserver
      route_data = mailhub.mycorp.com


      Transport配置

      #产生自动回复,但不影响原始邮件
      auto_reply:
      driver = autoreply
      from = $local_part@mycorp.com
      to = $sender_address
      subject = "AR: $h_subject"
      text = ${extract {mailReplyText}{RCPT_USER_DATA}}

      #本机邮件
      #用appendfile Transport
      #采用maildir格式,支持空间配额,自动建立目录
      #
      save_this_host_maildir:
      driver = appendfile
      create_directory = true
      mode = 0700
      maildir_format = true
      directory = /maildata/${extract {mailMessageStore} \
      {RCPT_USER_DATA}}/Maildir
      quota = ${extract {mailQuotaSize}{RCPT_USER_DATA} \
      {$value} {QUOTA_SIZE}}
      quota_filecount = ${extract {mailQuotaCount}{RCPT_USER_DATA} \
      {$value} {QUOTA_FILE_COUNT}
      }
      quota_warn_threshold = 75%

      #非本机邮件
      #用smtp Transport
      #目的地SMTP服务器的地址在前面Router中的route_data中指定
      redirect_to_real_server:
      driver = smtp

      #非本域邮件
      #用smtp Transport
      #
      redirect_to_hq_mailserver:
      driver = smtp

      #系统用户邮件
      #也用appendfile Transport
      local_delivery:
      driver = appendfile
      file = /var/mail/$local_part
      delivery_date_add
      envelope_to_add
      return_path_add

      #邮件监控
      #根据发件人的地址进行归类
      #
      copy_outgoing:
      driver = appendfile
      create_directory
      mode = 0700
      maildir_format
      directory = /var/mail/archive/${sender_address_local_part}/sent


    ·IT产品报价大全
    更多相关: 服务器 手机
    在百度中更多内容: 服务器 手机


    [第一页] 1 2 3 [下一页] [最后一页]

    打印此 投稿与建议 返回顶部

    相关文章
    ·快速 安全 免费的Linux邮件服务器Qmail
    ·与时俱进的邮件服务器鼻祖:sendmail
    ·Linux邮件平台的更替:sendmail和Postfix
    ·Linux平台首席邮件服务器软件Postfix
    ·Web开发部署和管理领袖:IBM WebSphere