首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

网络技术

邮件原理 | 网络协议 | 网络管理 | 硬件设备 | 传输介质 | 线路接入 | 路由接口 | 邮件存储 | CISCO | 华为3Com |
首页 > 网络技术 > 电子邮件原理及协议 > Mail System 介紹--Anti-Relay > 正文
金笛邮件系统

Mail System 介紹--Anti-Relay

出处:http://turtle.ee.ncku.edu.tw/~tung/mailsys/relay.htm 作者:http://turtle.ee.ncku.edu.tw/~tung/mailsys/relay.htm 时间:2008-4-9 17:25:50
简单三步解决企业垃圾邮件难题
Anti-Relay

以 sendmail 的原本設定來說, 對於任何由其它機器傳來的信件, 如果發現目的地不是自己, 就將其轉往真正的目的主機, 這個動作我們稱之為 Relay

在前面 SMTP 的例子中, 我們知道其他的主機可能會以假的 fromhost, mailfrom, rcpt to 資料來偽造信件, 雖然經由 mail header 的觀察可以看出問題所在, 但是不是所有的使用者都懂得看 mail header, 因此無條件地幫其它機器轉送信件這個動作, 有時會造成不必要的困擾.

sendmail-8.9.0 以後已經改掉這個 "無條件地幫其它機器轉送信件" 的特性了, 而如果您的 sendmail 是 8.8.x 版的, 可以將 這段 rule set 加在您的 sendmail.cf 這個檔裡頭, 讓您對轉送信件能作一些條件上的設定
 

Anti-Relay rule set 安裝
 
  1. 將 上述 rule set 所指向的 link 另存新檔
  2. 修改第 10 行 CR 那行, 將 your.domain 改成 mail server 的 domain
  3. 將這個檔案加到您的 sendmail.cf 的最後面
  4. touch /etc/sendmail.baddomain /etc/sendmail.baduser
  5. 重新啟動您的 sendmail即可
 

Anti-Relay rule set 內容

為了方便說明, 每行內容前面加有行號, 實際使用時請去掉行號

     1 ###################################################################
     2  ###  Ruleset check_rcpt - anti-relay when deal with RCPT cmd    ###
     3  ###################################################################
     4
     5  # define domains that can relay through this host
     6  CR cc.ncku.edu.tw ee.ncku.edu.tw
     7
     8  Scheck_rcpt
     9
    10  # anything terminating locally is ok
    11  R$*                     $: $>Parse0 $>3 $1
    12  R$+<@$*.>$*             $: $1<@$2>
    13  R$+<@$=w>               $@ OK                   user@local
    14  R$+<@$*$=R>             $@ OK                   user@*relayed_domain
    15
    16  # anything originating locally is ok
    17  R$*                     $: $(dequote "" $&{client_name} $)
    18  R$=w                    $@ OK                   mail from local
    19  R$*$=R                  $@ OK                   mail from relayed_domai
    20  R$@                     $@ OK                   local user
    21
    22  # anything else is bogus
    23  R$*                     $# error $: "550 Relaying Denied"
 

Anti-Relay rule set 說明

首先解釋一些基本符號

1.每行第一個字元如果是英文字母, 都代表一個命令
   C 定義 class (想像成定義字串陣列)
   S 宣告 rule set 由此開史
   R 表是這行是前面宣告的 rule set 的一部份

2. $+        1 個以上的 token
    $*        0 個以上的 token
    $=w   代表 w 這個 class 中的任一字串
    $=R     代表 R 這個 class 中的任一字串
    $@ ok  return ok
ps: 在 sendmail 中, w 這個 class 代表這部機器的 FQDN

sendmail 收到 rctp to: 這個命令時, 會自動呼叫一個名叫 check_rcpt 的 rule set,
內定這個 rule set 是空的, 我們現在透過這個 rule set 來對一些郵件做檢查的動作
為了方便說明, 我們舉例如下, eesol01 上的 sendmail 現在正接受 venus 的 SMTP connecttion, 接受一封信件

6: 定義 R 這個 class 為字串 cc.ncku.edu.tw 和 ee.ncku.edu.tw (想成字串陣列)
8: 宣告 check_rcpt 這個 rule set 由此開始, 其後以 R 開頭的各行就是這個 rule set 的內容
11,12: 把 rcpt to: 的 email address 由 <Tung@turtle.ee.ncku.edu.tw>
            轉成 Tung<@turtle.ee.ncku.edu.tw>
13: 檢查 Tung<@turtle.ee.ncku.edu.tw>
      是否符合 *<@eesol01.ee.ncku.edu.tw>
14: 檢查 Tung<@turtle.ee.ncku.edu.tw>
      是否符合 *<@*cc.ncku.edu.tw> 或 *<@*.ee.ncku.edu.tw>
17:取得送信過來給 eesol01 的主機的 domainname, 也就是 venus.ee.ncku.edu.tw
     注意, 不是在 helo message 中填的 fromhost, 而是指轉信過來的機器
18:檢查 venus.ee.ncku.edu.tw 是否符合 eesol01.ee.ncku.edu.tw
19:檢查 venus.ee.ncku.edu.tw 是否符合 *.cc.ncku.edu.tw 及 *.ee.ncku.edu.tw
23:如果以上檢查都不符合, 則傳回 "550 Relaying Denied", 拒絕傳送

在上面的例子中 eesol01 會幫所有目的地是 *.ee.ncku.edu.tw *.cc.ncku.edu.tw 的信件做 relay 動作, 而不管它是由誰發出的. 如果目的地不是 *.cc.ncku.edu.tw 也不是 *.ee.ncku.edu.tw, 那麼會 eesol01 會檢查看這封信是由哪部機器轉進來的, 如果符合 *.cc.ncku.edu.tw 或 *.ee.ncku.edu.tw 就認定可以幫忙轉送, 除此之外, 一律拒絕傳送
 

讓 8.9.x 幫忙代轉信件

前面提到 8.9.x 內定已經將幫忙轉信的功能關掉了, 但是在您的單位內可能還是有許多使用 Netscape/Outlook 寄信的使用者, 需要以您的主機作為 SMTP server 來寄信, 因此我們需要部份地開放轉寄的功能.

1. 首先找找您的 /etc/sendmail.cf 中是否有以下兩行

# Hosts that will permit relaying ($=R)
FR-o /etc/mail/relay-domains

2. 將您要代為轉信的 domain 寫在上面所寫的 /etc/mail/relay-domains 這個檔案中, 比如說我們要幫所有 ee.ncku.edu.tw 的機器轉送信件, 就在這個檔案寫入

    ee.ncku.edu.tw

這一行就可以了, 如果要幫不只一個 domain 轉信, 那麼就多寫幾行就可以了.
 

最後我們總結一下 sendmail 在裝設及使用上一些該注意的地方

1. 修改 /etc/host.conf, 讓 hosts 擺在 bind 那行之前, 這樣一來讓這部主機在查一部機器的正反解時, 都會先找 /etc/hosts 找不到再向 DNS 查詢. 這樣一來可以避免當 DNS 連不上時, 要很久才會去查 hosts, 同時也可以將一些無法在 DNS 上建 record 的機器先定在 hosts 裡.

2. /etc/hosts 中在定義機器名稱時, 同一行中, 完整的名稱先寫, 縮寫型的機器名稱後寫, 免得這部主機透過 hosts 反查時查到縮寫名稱

3. sendmail 所在的主機, 其 FQDN(fully qualified domain name) 應該
   a. 在 /etc/hosts 要定義, 免得開機時因為連不上 DNS 而使得 sendmail 執行會 hang 在那邊.
   b. 在 DNS 上有正解, 讓別台主機可以用 domain name 把信寄到你的機器上.
   c. 在 DNS 上有反解, 你這部主機才可能可以透過別的機器的 sendmail 轉寄信件 (因 anti-relay 會先 check connect from 機器的 domain)

4. 所有要透過這部 sendmail 主機寄信的機器, 必須
   a. 在 DNS 上有反解, 或在這部 sendmail 主機的 /etc/hosts 有定義, 以便 sendmail 能反查出那部機器的 domain
   b. 在 a. 所查到的 domain 必須要在 /etc/relay-domains 中有寫出來
 
5. 基本上 sendmail 8.9.x 在收到一封信件時,
   a. check 發信地址中的 hostname 是否 resolvable
   b. check 收信地址中的 hostname 是否 resolvable
   c. 當 sender 和 receiver 都不是這部主機時, 認定為 relay mail, 此時必須
      c.1 connect from 的 host 的反查所得的 domain 在 /etc/relay-domains 中有定義 或是
      c.2 receiver 所在的主機, 其在 DNS 上有定義這部 sendmail 主機是它的 MX(mail exchanger)
   要合乎上面三個條件信才會被收進來, 然後才進行轉寄的動作...

在 sendmail source 中的 cf/README 有提到許多關於 sendmail 設定的說明, 很值得參考.
(FreeBSD 的 sendmail source 文件 放在 /usr/src/contrib/sendmail/,
Linux RedHat sendmail 文件放在 /usr/share/sendmail-cf ) )
 
 

RedHat Linux 的 Sendmail.cf 修改

為了安全的考量, 某些系統上的 sendmail.cf 內定只聽在 127.0.0.1 這個 IP, 所以 sendmail 只接受 local 的連線 (即 local 的程式可以送信出去), 但是卻無法接收 remote 端的連線(即無法接受 remote 送來的信件). 如果您的機器發生這樣的情形, 解決步驟如下:

  1. 開啟 sendmail.cf, 找到 下列部分

    # SMTP daemon options
    O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

  2. 將 127.0.0.1 改成 0.0.0.0 讓 sendmail 聽在這部機器所有的 IP 上.

    # SMTP daemon options
    O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA

  3. kill -1 pid_of_sendmail
相关文章 热门文章
  • 飞一般的邮差 梦幻快车DreamMail
  • 面临各种挑战 Email前途堪忧
  • Gartner:E-Mail将进入云计算主流应用
  • 用Foxmail有效保障邮件数据的安全
  • Koomail:无需配置POP3等参数即可使用的邮件客户端
  • Koomail 5:信纸模板好丰富
  • Koomail:保障重要邮件不丢失
  • 企业级 FortiMail获ICSA实验室认证
  • 沈阳新加坡城成功构建Coremail邮件系统
  • Coremail邮件系统与上海客户联谊
  • 谷歌邀用户试用Gmail新功能
  • Push Mail悄悄蔓延中国市场
  • 中文RFC文档目录
  • 手把手教你玩转免费顶级域名
  • 浅谈Base64编码
  • 手把手教你如何免费注册国际顶级域名
  • 电子邮件原理
  • 邮件-域名-DNS相关知识
  • 全面剖析E-mail收发失败的原因(一)
  • SMTP结构及原理
  • 关于邮件系统域名(DNS)设置的小常识
  • 电子邮件的工作原理
  • 邮件原文详细介绍(一)--神奇的MIME
  • 发送邮件常见出错代码
  • 自由广告区
     
     
    WINMAIL 让您轻松架设邮件系统
    eqmail
    最新软件下载
  • Exchange Server 2003 群集安装配置
  • ORF 4.2 Beta
  • ORF Enterprise Edition 4.1 正式版
  • Exchange 2000/2003 日志分析系统
  • Microsoft Outlook Personal Folders B..
  • MDaemon Server 9.07 英文正式版
  • Kerio MailServer 6.5.1 6098 Linux版
  • Kerio MailServer 6.5.1 6098 正式版
  • 酷邮(KooMail) V5.0 简体中文版
  • PowerGUI 
  • IMail Server 10
  • Foxmail6.5 Beta2
  • 今日邮件技术文章
  • 简谈ubuntu之DIY发行版
  • Linux操作系统最的功能是什么?
  • 用Linux系统引导CD为服务器排忧解难
  • J2EE应用如何和DOMINO集成
  • 飞一般的邮差 梦幻快车DreamMail
  • 垃圾邮件成为噩梦 一英国人每天收到4...
  • 微软步入后盖茨时代 鲍尔默应作10件大..
  • 网络钓鱼日益猖獗 如何避免上网被“钓..
  • 赛门铁克公布2008年7月份垃圾邮件现状..
  • 译稿:与垃圾邮件的亲密接触
  • 该选谁 九款主流免费电子邮箱经典评测
  • 邮箱登录 不走寻常路(组图)
  • 最新专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • 移动电子邮件专题
  • Apache James 专题
  • IMail Server 操作指南
  • ISA Server 2004 使用专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2007 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号