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

网络技术

邮件原理 | 硬件设备 | 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:49
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
相关文章 热门文章
  • 微软推出新功能 提高Hotmail密码安全性
  • Hotmail新功能:“我的朋友可能被黑了”
  • 谷歌已着手整合数项Gmail/Google+功能
  • 新型电子邮件服务Shortmail获75万美元种子资金
  • Gmail事件启示:特大规模云计算不见得是好事
  • 恶意入侵者利用Gmail等发起精准性攻击
  • 谷歌禁止13岁以下儿童使用Gmail邮箱
  • Gmail推出可切换的多种收件箱模式
  • 继gmail之后谷歌购买并新注多个邮件域
  • 岁月催人老 微软Hotmail已经15岁了
  • 邮件系统双雄PK: TurboMail vs Exchange
  • TurboMail如何搭建与外网通信的局域网邮件服务器
  • 中文RFC文档目录
  • 手把手教你玩转免费顶级域名
  • 浅谈Base64编码
  • 手把手教你如何免费注册国际顶级域名
  • 电子邮件原理
  • 邮件-域名-DNS相关知识
  • 全面剖析E-mail收发失败的原因(一)
  • SMTP结构及原理
  • 关于邮件系统域名(DNS)设置的小常识
  • 电子邮件的工作原理
  • 邮件原文详细介绍(一)--神奇的MIME
  • 发送邮件常见出错代码
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    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-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号