北京快三开奖

  • <tr id="U9YkSO"><strong id="U9YkSO"></strong><small id="U9YkSO"></small><button id="U9YkSO"></button><li id="U9YkSO"><noscript id="U9YkSO"><big id="U9YkSO"></big><dt id="U9YkSO"></dt></noscript></li></tr><ol id="U9YkSO"><option id="U9YkSO"><table id="U9YkSO"><blockquote id="U9YkSO"><tbody id="U9YkSO"></tbody></blockquote></table></option></ol><u id="U9YkSO"></u><kbd id="U9YkSO"><kbd id="U9YkSO"></kbd></kbd>

    <code id="U9YkSO"><strong id="U9YkSO"></strong></code>

    <fieldset id="U9YkSO"></fieldset>
          <span id="U9YkSO"></span>

              <ins id="U9YkSO"></ins>
              <acronym id="U9YkSO"><em id="U9YkSO"></em><td id="U9YkSO"><div id="U9YkSO"></div></td></acronym><address id="U9YkSO"><big id="U9YkSO"><big id="U9YkSO"></big><legend id="U9YkSO"></legend></big></address>

              <i id="U9YkSO"><div id="U9YkSO"><ins id="U9YkSO"></ins></div></i>
              <i id="U9YkSO"></i>
            1. <dl id="U9YkSO"></dl>
              1. <blockquote id="U9YkSO"><q id="U9YkSO"><noscript id="U9YkSO"></noscript><dt id="U9YkSO"></dt></q></blockquote><noframes id="U9YkSO"><i id="U9YkSO"></i>

                鸟哥的 Linux 私房菜
                目次 | Linux 根底篇 | Linux 效劳器篇 | Linux 企业使用篇 | 平安办理
                     
                 
                近来更新日期:2007/02/27
                在这个邮件效劳器的搭建中,我们起首议论 Mail 与 DNS 的紧张相干性,然后依序引见 Mail Server 的相干名词,以及 Mail Server 的运作根本流程与协议,也谈判到相干的 Relay 与邮件认证机制等项目, 这些项目关于将来邮件主机的办理与设定是紧张的,请不要疏忽了这方面题目的讨论喔。 在这篇文章中,我们将 sendmail 与 postfix 合在一同讲了,由于现在 Postfix 这个效劳器的设定下面具有比拟佳的亲和力, 以是 sendmail 我们仅作个复杂的引见,次要在以 Postfix 为主的邮件主机搭建喔!

                1. 本章的行前预备任务
                2. 邮件效劳器的功用与运作原理
                  2.1 电子邮件的功用与题目
                  2.2 Mail server 与 DNS 之间的干系
                  2.3 邮件传输所需求的元件 (MTA, MUA, MDA) 以及相干协议
                  2.4 运用者收信时效劳器端所提供的相干协议
                  2.5 Relay 与认证机制的紧张性
                  2.6 电子邮件的材料内容
                  2.7 邮件效劳器搭建条件
                3. Sendmail 效劳器的浅易搭建引见
                  3.1 所需求的套件与套件构造
                  3.2 开放 sendmail 的监听介面与收信主机称号设定
                  3.3 开放运用 MTA Relay 权限设定 /etc/mail/access
                4. 用 Postfix 告竣 MTA 功用
                  4.1 Postfix 的发生
                  4.2 所需求的套件与套件构造
                  4.3 让 Postfix 可监听 Internet 来收发函件
                  4.4 函件传送流程与收信、relay 等紧张看法
                  4.5 设定邮件主机运用权限与过滤机制 /etc/postfix/access
                  4.6 设定邮件又名
                  4.7 邮件转递 ~/.forward
                  4.8 观察函件伫列资讯
                  4.9 设定 relay 的进阶功用
                5. 让你的 MTA 承受 MUA 的读信要求:POP/IMAP等协议
                6. 用户真个收发信软件 (MUA)
                  6.1 Linux mail
                  6.2 Linux telnet
                  6.3 Thunderbird 好用的跨平台 (Windows/Linux X) 软件
                7. 邮件主机的进阶设定:
                  7.1 一些设定档所需求留意的‘权限’题目
                  7.2 复杂的告白信抵御机制: postgrey 的举措
                  7.3 关于黑名单的抵御机制
                  7.4 开放 SMTP 身份认证之 relay 机制
                  7.5 根底的邮件过滤机制
                  7.6 非牢固 IP 也可以有春天: relayhost
                  7.7 邮件扫瞄器:amavisd-new+f-port+spamassanssin (告白信主动学习)
                  7.8 其他设定小本领
                8. 其他使用阐明
                  8.1 题目反省
                  8.2 哪些材料要备份
                  8.3 quota 与目次移转
                9. 重点回忆
                10.课后训练
                11.参考材料
                12.针对本文的发起:http://phorum.vbird.org/viewtopic.htm?p=117550

                大标题的图示本章的行前预备任务
                玩过邮件主机的冤家都很清晰,在如今的情况当中想要搞定 Mail server 是很难的一件事变, 由于现在网络社会的告白信、渣滓信、病毒信真实是多的不像话,以是各次要的 ISP 关于邮件办理下面越来越严厉, 因而假如你没有好好的计划好一些防范的任务,以及一些事前思索计划的举措, 那么由你的邮件主机寄出去的函件很能够总是无法抵达目的主机的!并且很紧张的一件事变是, 邮件主机与 DNS 是不行联系的,尤其是 DNS 的 MX 标记,另有正反解的后果。无论怎样,想要搞定 Mail server 你必须要:
                • 你肯定要晓得 DNS 的相干意义, 不然你的邮件主机一定会发作不明缘由的错误!
                • 网络根底也很紧张,尤其是一些传输与反省方面的举措;
                • 正轨表现法你最好要熟习一些,由于许多邮件过滤机制是用他来处置的。
                • 套件与行程办理也要熟习,由于 mail server 使用许多额定的顺序来办理邮件。
                • 无论怎样都要夸大的,防火墙设定要准确, SELinux 记得先封闭!

                大标题的图示邮件效劳器的功用与运作原理
                电子邮件是个啥玩意儿?他是应用网络通报一些资讯给远端主机的一种资讯通报举动,固然讯息笔墨是很冷很硬的电脑笔墨, 的确比不上手写函件来的让人以为暖和,不外,关于具偶然效性的资讯来说,电子邮件但是个车载斗量的好帮忙! 但是,电子邮件零碎发达开展的如今却被某些少局部的特定人士所乱花,招致渣滓函件、色情告白函件等等的众多! 真是啊~伤头脑~底下我们就先来谈一谈这个电子邮件相干的功用吧!


                小标题的图示电子邮件的功用与题目
                在现在的社会当中,没有电子邮件 (e-mail) 好像是蛮奇异的一件事!可以说,如今 e-mail 曾经成为一个很广泛的人与人之间的相同管道了, 电子邮件可以很疾速的帮你将文件或讯息传送到地球上的任何一个有网络存在的角落,固然, 你也可以在任何有网络的中央,连上 Internet 去收取你的函件!很高兴不是吗?

                不外,遗憾的是,只需是有人类的中央,就会有许多你意想不到的事变会呈现了,固然 e-mail 也不破例,怎样说呢? 我们来渐渐的剖析一下电子邮件发生的一些题目吧:
                • 夹带病毒的电子邮件题目:
                  你可以经常听到电子邮件能够夹带病毒对吧!没错,应用电子邮件以及人们关于电子邮件的掉以轻心的态度, 使得以电子邮件为前言的电脑病毒更容易‘深化人群’当中呐!这个题目形成大巨细小的损伤, 假如发作在大企业当中,那可真是受不了那~哪个主管受的了一天到晚电脑重新装置的~ 并且万一中毒的是大型主机,光是材料的损毁就能够让公司开张了....

                • 怪客透过邮件顺序入侵:
                  只需是开放给 Internet 用的顺序就没有相对平安的,只需在 Internet 下面跑的材料就没有相对失密的! 你可以随便的运用怪客软件 (Cracker) 就可以获得运用者在应用 e-mail 传送进程当中所输出的帐号与暗码, 若颠末剖析之后,还能够破解对方的邮件主机~哇!真是乱可骇一把的!

                • 告白信与渣滓信等:
                  这个可说是现在各大 ISP 心中永久的痛~这些渣滓函件可以占失许多那少的不幸的频宽, 使得正常运用者连线速率与质量降落,更能够形成网络的进展~固然,经常收到渣滓函件的你,大约也欠好过吧!

                • 主机被少量不明函件塞爆:
                  万一你没有将邮件主机设定好,嘿嘿!送信者可以藉由你主机收信的功用,发送少量的函件, 让你‘一次收个够!’灌爆你的主机硬碟,想要不妥机都粉难~

                • 真实社会的厌恶情事:
                  ‘黑函’!听到会不会很惧怕?固然很惧怕啦!偏偏,运用 e-mail 就可以作许多的好事~这真是太不品德了~

                • 不实的函件内容:
                  只需留意到消基会的讯息就可以晓得啦,不明泉源的电子邮件说的内容,不要随便的置信! 由于许多但是以谣传讹,后果,各人都被耍了的~比方,你的冤家收到一封信,以为‘哇!这是大事变’, 以是在没有求证的状况下,将信‘转寄’给你看,嘿!你的冤家寄给你的,固然要置信他啦! 立即再转寄,云云频频地循环,嘿嘿!这个错误内容的讯息立刻就让各人晓得, 更可骇的是‘还会让各人承受~’以是,看就任何讯息时,请万万要记得求证一下呐!
                可骇吧!电子邮件会衍生出这么多的题目说~别的,这个 email 效劳器的设定与办理真的是网管职员心中永久的痛! 为什么呢?由于人都是想要越便当越复杂越好,但越便当越不论制的邮件主机就越容易被打击或遭应用! 反过去说,假如你针对邮件主机管得太严峻,那就不太兽性化,置信至多您的主管能够就不太称心, 怎样办?

                呵呵!没错啦!邮件主机便是这么回事,让人又爱又怕的一个玩意儿,搞定他,祝贺您啊统统顺遂圆满! 搞不定他,主机被当成渣滓函件转运站事小,丢失任务那但是‘兹事体大’呦! 就由于他是这么紧张又难以搞定,以是我们可得好好的学学他呐!


                小标题的图示Mail server 与 DNS 之间的干系
                既然要运用 e-mail ,固然就需求邮件效劳器啰 (Mail Server)!否则你的信要怎样寄出去呢?现实上, mail server 的原理说难不难,但是说复杂吗~好像又有点难以了解ㄋㄟ~,以是, 底下我们要来谈一谈他的原理局部,然后再针对主机的设定来停止阐明咯!我们起首要讲的便是‘ Mail server 零碎与 DNS 零碎有什么干系性?’ 这个局部老手最容易被搞混哩,能否要搭建 mail server 就‘宿命’的肯定得搭建 DNS server 在你的主机下面吗?

              2. Mail server 与正当的主机称号
              3. 现实上现在曾经没有人会运用 IP 来寄信了,我们通常接纳到的 email 都是运用‘帐号@主机称号’的方法来处置的, 以是说,你的邮件效劳器‘就肯定要有一个正当注册过的主机称号’才可以。为什么呢? 由于邮件效劳器便是一台电脑主机嘛!这部电脑主机是应用 TCP/IP 来停止网络材料的传输, 以是固然需求有 IP 。不外由于网络运用众多的种种要素,招致我们不容许间接应用主机的 IP 来寄信了! 因而,你想要搭建 mail server 就‘必须’要有正当的主机称号啰。

                OK!既然我只需一个正当的主机称号即可,那么表现我不需求搭建一台 DNS 主机啰? 是的,你可以如许以为!只需你拥有正当的主机称号,亦即在 DNS 的盘问零碎当中你的主机称号拥有一个 A 的标记, 实际上你的 mail server 就可以搭建乐成 (相干的 DNS 与正当主机称号的注册请参考后面章节的阐明)。 只不外由于现在网际网络下面的告白信、渣滓信与病毒信等占用了太多的频宽, 招致整个网络社会破费过多的本钱在耗费这些渣滓材料。 以是为了根绝可爱的渣滓函件,现在的大型邮件主机供给商 (ISP) 都市针对不明泉源的邮件加以限定, 这也便是说‘想要搭建一台复杂可以运作的 mail server 越来越难了’。

              4. DNS 的反解也很紧张!
              5. 关于普通的效劳器来说,我们只需运用正解让用户端可以准确的找到我们效劳器的 IP 即可搭建效劳器, 举例来说 WWW 效劳器便是如许。不外,由于现在收信真个邮件主时机针对邮件泉源的 IP 停止反解, 而假如你的网络情况是由拨接获得非牢固的 IP 时,该种 IP 在 ISP 方面通常会自动的以 xxx.dynamic.xxx 之类的主机称号来办理,偏偏如许的主机称号会被次要的大型邮件效劳器 (比方 hotmail, yahoo 等) 视为渣滓函件, 以是你的邮件主机所收回的函件将能够被抛弃,那可就伤头脑了!

                以是啊,假如你想要搭建一台 Mail server 的话,请‘务必’向您的下层 ISP 请求 IP 反解的对应, 不要再运用预设的反解主机称号,不然很容易招致您的邮件主机所收回的函件会在 Internet 下面漂泊啊!
                Tips:
                实在你照旧可以不必请求 IP 的反解,不外就得要应用所谓的 relayhost 或许是 smarthost 来处置邮件转递的题目, 这个局部又触及到下层 ISP 的题目,挺庞大!我们会在后续作阐明!
                鸟哥的图示
              6. 需求 DNS 的 MX 及 A 标记啊!
              7. 那么我们的邮件效劳器零碎究竟是怎样运用 DNS 的资讯来停止邮件的通报的? 还记得在 DNS 章节外面谈到的 MX 这个标记吗?事先我们仅说过这个 MX 代表的是 Mail eXchanger, 当一封邮件要传送出去时,邮件主时机先剖析那封信的‘目的主机的 DNS ’,先获得 MX 标记, 留意,MX 标记能够会有多部主机喔!然后以最优先 MX 主机为准将信发送出去。 看不懂吗?不要紧,我们以底下这个 DNS 典范来说:
                xyz.com.vbird  IN  MX 10 mail.xyz.com.vbird
                xyz.com.vbird  IN  MX 20 mail2.xyz.com.vbird
                xyz.com.vbird  IN  A     aaa.bbb.ccc.ddd
                
                假设上述的 DNS 设定是正常的,那么:
                • 当有一封信要传给 user@xyz.com.vbird 时,由于 MX 标记最低者优先,以是该封信会先传送到 mail.xyz.com.vbird 那部主机。
                • 假如 mail.xyz.com.vbird 由于种种缘由,招致无法收下该封信时,该封信将以主要 MX 主机来传送,那便是传送到 mail2.xyz.com.vbird 那部主机上头;
                • 假如两部 MX 主机都无法担任的话,那么该封信会间接以 A 的标记,亦即间接传送到 aaa.bbb.ccc.ddd 谁人 IP 上头去, 也便是 xyz.com.vbird 自身啦!
                在这个进程当中,你必须要留意到:mail.xyz.com.vbird 及 mail2.xyz.com.vbird 必须要是可以帮 xyz.com.vbird 转信的主机才行,也便是说,那两部主机通常是你公司的最下游的邮件主机, 并不是你随意填写的!那两部主机还需求针对你的 xyz.com.vbird 来设定‘邮件转递’才行! 不然你的信会被踢失的。

                由于如今的许多邮件主时机去搜索 MX 这个标记来判别目的邮件主机能否为正当,以是你要搭建 Mail server 固然不用自行设定 DNS 效劳器,不外你最好要请求一个 MX 的标记才行。别的,MX 标记肯定要设定准确,不然你的函件将能够会间接被 MX 主机踢失。为了要设定 MX 但是我们没有下层邮件效劳器时,以是你可以指定 MX 为本人,应用本人当 MX 主机即可

                那么你大概会想,这个 MX 有啥益处啊?普通来说,假如目的主机挂点时,你的邮件通常会间接退还给原发信者, 但假如有 MX 主机时,这部 MX 主时机先将该封信放在他的伫列 (queue) 当中,比及你的目的主机重新提供邮件效劳后, MX 主时机将你的函件传送给目的主机,云云一来你的函件就比拟不会遗失啊!如许说,您可以理解吧! ^_^

              8. Email 的位址
              9. 方才上头说过 email 通常是‘帐号@主机称号’的方法来处置,举例来说鸟哥的 linux.vbird.tsai 主机下面有个 dmtsai 的运用者,则我的 email 将会成为:‘dmtsai@linux.vbird.tsai’,当有人要寄信给我时, 他会剖析 @ 前面的主机称号,亦即 linux.vbird.tsai 的 MX/A 标记等等,然后再透过方才阐明的流程来传出函件。 而当我的 linux.vbird.tsai 收到这封信时,他会将信放到 dmtsai 的信箱当中啦!底下我们就来谈一谈这个流程吧!

                小标题的图示邮件传输所需求的元件 (MTA, MUA, MDA) 以及相干协议
                在开端引见邮件的传送进程之前,我们先来想一想,你是怎样寄出电子邮件的? 假定你要寄信给一个运用者,他的电子邮件是‘a_user@gmail.com’好了,也便是说, 你要寄一封信到 gmail.com 这个主机上的意思。 那你的桌上型电脑 (举例来说, Windows 零碎) 能否可以将这封信‘间接’透过网络送给 gmail.com 谁人主机上? 固然不可啦!你得要设定帮你转信的邮件主机才行!也便是说,你必须要先向某一台邮件主机注册, 以获得一个正当的电子邮件运用权限后,才干够发送邮件出去的。

                以是说,你要寄出一封函件时是需求许多介面的帮助的,底下列出一个复杂的图示来阐明:

                电子邮件传送的流程表示图
                图一、电子邮件传送的流程表示图

                我们先来表明一些专著名词吧!然后再来阐明传送的流程:
                • MUA (Mail User Agent):
                  望文生义 MUA 便是‘邮件运用者署理人’的意思,由于除非你可以间接应用相似 telnet 之类的软件登入邮件主机来自动收回函件,不然您就得要透过 MUA 来帮你送信到邮件主机上头去。 最罕见的 MUA 像是 Mozilla 推出的 Thunderbird (雷鸟) 自在软件, 或许是 Linux 桌面 KDE 罕见的 Kmail ,及 Windows 内件的 Outlook Express (OE) 等。 MUA 次要的功用便是收受邮件主机的电子邮件,以及提供运用者阅读与编写邮件的功用!

                • MTA (Mail Transfer Agent):
                  MUA 帮用户传送邮件到邮件主机上,那这部邮件主机假如可以帮用户将这封信寄出去,那他便是一台邮件传送主机 (MTA) 啦!这个 MTA 便是‘邮件传送署理人’的意思。也来望文生义一下,既然是‘传送署理人’, 那么运用者寄出的信,与运用者要收信时,便是找他 (MTA) 就对啦!根本上, MTA 的功用有这些:

                  1. 收受函件:运用复杂邮件传送协议(SMTP)
                    MTA 主机最次要的功用便是:未来自用户端或许是其他 MTA 的来信收上去,这个时分 MTA 运用的是 Simple Mail Transfer Protocol (SMTP),他运用的是 port 25 啦!

                  2. 转递函件:
                    假如该封函件的目标地并不是自身的用户,且该封信的相干材料契合运用 MTA 的权利, 那么我们的 MTA 就会将该封信再传送到下一台主机上。这便是所谓的转递 (Relay) 的功用。

                  3. 回应运用者的收信要求:POP 或 IMAP 协议
                    运用者可以透过 MTA 主机提供的邮政效劳协议 (Post Office Protocol, POP) 来收下本人的函件, 也可以透过 IMAP (Internet Message Access Protocol) 协议将本人的函件保存在邮件主机下面, 并进一步树立邮件材料匣等进阶任务。

                  总之,我们普通提到的 Mail Server 便是 MTA 啦!而严厉来说, MTA 实在仅是指 SMTP 这个协议罢了。 而告竣 MTA 的 SMTP 功用的次要套件包罗老牌的 sendmail ,后起之秀的 postfix ,另有 qmail 等等。 底下我们来看看,那么在 MTA 上头另有哪些紧张的功用。

                • MDA (Mail Delivery Agent):
                  字面上的意思是‘邮件递送署理人’的意思。现实上,这个 MDA 是挂在 MTA 底下的一个小顺序, 最次要的功用便是:剖析由 MTA 所收到的函件表头或内容等材料, 来决议这封邮件的去处。以是说,下面提到的 MTA 的函件转递功用,实在是由 MDA 告竣的。 举例来说,假如 MTA 所收到的这封信目的是本人,那么 MDA 会将这封信给他转到运用者的信箱 (Mailbox) 去, 假如不是呢?那就预备要转递出去了。别的,MDA 另有剖析与过滤邮件的功用喔!举例来说:

                  1. 过滤渣滓函件:
                    可以依据该封邮件的表头材料,或许是特定的函件内容来加以剖析过滤。比方某个告白信的主题都是牢固的, 如‘AV情色...’等等,那就可以透过 MDA 来过滤并去除该邮件。

                  2. 主动回答:
                    假如您出差了招致某一段工夫内无法立刻复书时,就可以透过 MDA 的功用让邮件主机可以主动收回回答函件, 云云您的冤家就不会以为你太大牌!^_^

                  各次要的 MTA 顺序 (sendmail,postfix...) 都有本人的 MDA 功用,不外有些外挂的顺序功用更弱小, 举例来说 procmail 便是一个过滤的好帮忙,别的 Mailscanner + Spamassassion 也是可以运用的一些 MDA 喔。

                • Mailbox:
                  便是电子邮件信箱嘛!复杂的说,便是某个帐号公用的函件收受文件啰。我们的 Linux 零碎预设的信箱都是放在 /var/spool/mail/运用者帐号 中! 若 MTA 所收到的函件是本机的运用者,MDA 就会将函件送到该 mailbox 当中去啰!
                好了,那么来想一想,你怎样透过 MUA 来将函件送到对方的邮件信箱 (Mailbox) 去呢?
                • Step 0:获得某部 MTA 的运用权限:
                  就如图一所示,我们当地真个 MUA 想要运用 MTA 来传出函件时, 固然需求获得 MTA 的运用权限。通常便是说:我们必需要向 MTA 注册一组可运用 email 的帐号与暗码才行。

                • Step 1:运用者在 MUA 上编写函件后,传送至 MTA 上头:
                  运用者在 MUA 下面编写函件,函件的材料次要有:
                  • 函件标头:包罗寄件者的 email 以及收件者的 email 位址,另有该封函件的宗旨 (subject) 等;
                  • 函件内容:便是你要跟对方阐明的内容啦!
                  编写终了之后只需按下传送钮,该封信就会送至你的 MTA 主机下面了,留意:是你的 MTA 而不是对方的 MTA ! 假如你确定可以运用该部 MTA 主机,那么你的这封信就会被安排到 MTA 的伫列 (queue) 当中并等候传送出去了。

                • Step 2.1:假如该封信的目的是当地端 MTA 本人的帐号
                  你是可以寄信给你本人的,以是假如你的 MTA 收到该封函件的目的是本人的用户时,那就会透过 MDA 将这封信送到 Mailbox 去啰!

                • Step 2.2:假如该封信目标为其他 MTA ,则开端转递 (Relay) 的流程:
                  那假如这封信的目的是其他的主机呢?这个时分我们的 MTA 就会开端剖析该封信能否具有正当的运用权限, 若具有运用权限时,则我们的 MDA 会开端停止邮件转递,亦即该封函件会透过我们的 MTA 向下一台 MTA 的 smtp (port 25) 发送出去。假如该封函件顺遂的发送出去了,那么该封函件就会由伫列当中移撤除了。

                • Step 3:对方 MTA 主机收受函件
                  假如统统都没有题目的话,远真个 MTA 会收到我们 MTA 所收回的那封信,并将该函件安排到准确的运用者信箱当中, 等候运用者登入来读取或下载。
                在这整个进程当中,你会发明你的函件是由我们的 MTA 帮助发送出去的,此时 MTA 提供的协议是复杂邮件传输协议 (Simple Mail Transfer Protocol, smtp), 而且该封信终极是停顿在对方主机的 MTA 上头!并不是你冤家的 MUA 上头啊!
                Tips:
                为何特殊夸大这一点?由于曩昔有个朋有跟我说:‘鸟哥啊,你要寄 email 给我的时分记得跟我讲, 那我上班前将电脑开着,以免你信寄不到我的信箱’,此时额头三条线忽然跑出来~很欠好意思~ 以是这里才要特殊夸大,你的 MUA 不用开着啦!要收信时再翻开即可。
                鸟哥的图示
                理解了传送函件时 MTA 需求启动 smtp (port 25) 之后,再来我们得要谈谈那这封函件对方要怎样接纳啊?


                小标题的图示运用者收信时效劳器端所提供的相干协议
                那运用者假如想要收信时,固然也可以透过 MUA 间接来连线获得本人的邮件信箱内的材料啊! 整个进程有点像底下如许:

                电子邮件收信时的流程表示图
                图二、电子邮件收信时的流程表示图

                运用者的 MUA 会透过两种根本协议来停止函件的收受喔:POP3 及 IMAP。 我们先谈一谈 POP3 的收信方法吧:
                1. MUA 透过 POP3 (Post Office Protocol version 3) 的协议衔接到 MTA 的 port 110, 而且输出帐号与暗码来获得准确的认证与受权;
                2. MTA 确认该运用者帐号/暗码没有题目后,会前去该运用者的 Mailbox (/var/spool/mail/运用者帐号) 获得运用者的函件并传送给运用者的 MUA 软件上;
                3. 当一切的函件传送终了后,运用者的 mailbox 内的材料将会被删除!
                在上述的流程当中我们晓得 MTA 主机必需要启动 POP3 这个协议才行,不外这个协议的收件方法比拟风趣, 由于运用者收信是由第一封函件开端收下直到最初一封函件传输终了为止。 不外由于某些 MUA 顺序撰写的题目, 如有些邮件有病毒的能够性时,透过防毒软件将能够招致该 MUA 软件的断线! 云云一因由于传输没有终了,因而 MTA 主机并不会将运用者的函件删除。 此时假如运用者又再一次的按下接纳按键,呵呵!原来已接纳的函件又会反复收到,而没有收到的照旧收不到!

                这个时分大概你可以透过登入主机应用 mail 这个指令来处置你有题目的邮件, 大概换一种 MUA 也是个不错的考虑偏向,又或许临时将防毒软件关失也是可以思索的手腕之一。 转头过去想一想,由于 POP3 的协议预设会将函件删除,那假如我明天在办公室将我的信收到办公室的电脑中, 当我回家时再度启动 MUA 时,能否可以收到曾经被接纳的函件?固然不可,对吧!

                大概你需求更有协助的协议,亦即 IMAP (Internet Messages Access Protocol) , 这个协议可以让你将 mailbox 的材料转存到你主机上的家目次,亦即 /home/帐号/ 谁人目次下, 那你不光可以树立邮件材料匣,也可以针对函件分类办理,并且在任何一个可连上彀络的中央你只需登入主机, 本来的函件就照旧存在呐!真是好啊!

                不外,运用 IMAP 时,运用者的目次最好可以加点限定,比方应用 quota 来办理运用者的硬碟运用权限, 不然由于函件都在主机上头,假如运用者过多且误用时,你的硬碟空间会被吃光光喔!留意留意!

                OK!透过下面的阐明你要晓得,要搭建一台可以运用 MUA 停止收发函件的 MTA 效劳器,你至多也需求启动 SMTP 以及 POP3 这两个协议才行!而这两个协议的启动顺序并不相反, 以是搭建上照旧得要警惕留意啊!


                小标题的图示Relay 与认证机制的紧张性
                当你需求 MTA 帮你将信寄送到下一台 MTA 去时,这个举措就称为邮件转递 (Relay) 啰,那便是图一当中的 Step 2.2 谁人举措啦。 那么我们来想一想,假如‘一切的人都可以藉由这一台 MTA 帮助停止 Relay 时, 这个状况称之为 Open Relay 的举措’。当你的 MTA 发作 Open Relay 时,会有什么题目? 题目可就大了!

                当你的 MTA 由于设定不良的干系招致具有 Open Relay 的情况,加上你的 MTA 的确是连上彀际网络时, 由于网际网络下面用 port scan 软件的闲人太多,你的 MTA 具有 Open Relay 的功用这件事变, 将会在短工夫内就被许多人发觉,此时那些非法的告白信、色情渣滓信业者将会应用你的这部 Open Relay MTA 发送他们的告白,以是你会发作的题目至多有:
                • 你主机地点的网络正常运用的连线速率将会变慢,由于网络频宽都被告白、渣滓信吃光了;
                • 你的主机能够由于少量发送函件招致主机资源被耗尽,容易发生不明缘由当机之类的题目;
                • 你的 MTA 将会被网际网络社会界说为‘黑名单’,今后许多正常的邮件就会无法收发;
                • 你 MTA 地点的这个 IP 将会被下层 ISP 所封闭,直到你处理这个 Open Relay 的题目为止;
                • 某些用户将会对你的才能发生质疑,对您公司或许是你团体将会有决心妨碍!乃至能够流失客源;
                • 假如你的 MTA 被应用来发黑函,你是找不到原发信者的,以是你这部 MTA 将会被追踪为终极站!
                题目很大呦!以是啊,现在一切的 distributions 都一样,简直都将 MTA 预设启动为仅监听外部回圈介面 (lo) 罢了,并且也将 Open Relay 的功用取消了。既然取消 Open Relay 的功用,那么怎样运用这部 MTA 的 Relay 来帮助转信啊?呵呵!以是我们在上头才会不断说,你‘必须’获得正当运用该 MTA 的权限啊! 这也便是说,设定谁可以运用 Relay 的功用便是我们办理员的义务啦!通常设定 Relay 的办法有这几种:
                • 规则某一个特定用户真个 IP 或网段,比方规则外部 LAN 的 192.168.1.0/24 可运用 Relay;
                • 若用户真个 IP 不牢固时 (比方拨接获得的非牢固 IP) 可以应用认证机制来处置。
                认证机制下面罕见的有 SMTP 邮件认证机制,以及 SMTP after POP 两种,不管是哪一种机制, 根本上都是透过让运用者输出认证用的帐号与暗码,来确定他有正当运用该 MTA 的权限, 然后针对经过认证者开启 Relay 的援助便是了。 云云一来你的 MTA 不再启动 Open Relay ,而且用户端照旧可以正常的应用认证机制来收发函件, 身为办理员的你可就轻松多啰! ^_^


                小标题的图示电子邮件的材料内容
                看过上头的材料后,您应该关于 Mail server 有一些水平的看法了。再来要谈的是, 那么一封 email 的内容有哪些局部呢?就跟人类社会的邮件有信封袋以及外部的信纸一样, email 也有所谓的标头 (header) 以及内容 (body) 两部份喔!

                email 的标头局部会有几个紧张资讯,包罗:这封信来自谁人 MTA、是由谁所发送出来的、要送给谁、 宗旨为多么等,至于内容则是发信者所填写的一些阐明啰。假如你运用 dmtsai 的身份下达这个指令:
                [dmtsai@linux ~]$ echo "HaHa.." | mail -s "from vbird" dmtsai
                
                然后将本人的信箱内容叫出来,如下所示:
                [dmtsai@linux ~]$ cat /var/spool/mail/dmtsai
                From dmtsai@localhost  Tue Nov 21 00:33:29 2006   <==发信者 email
                Return-Path: <dmtsai@localhost>                   <==之前的 MTA 泉源
                X-Original-To: dmtsai                             <==原收件者的资讯
                Delivered-To: dmtsai@localhost                    <==终极此邮件转递给谁
                Received: by localhost (Postfix, from userid 500) <==上一个 MTA 泉源
                        id 7A9C3A26B8; Tue, 21 Nov 2006 00:33:29 +0800 (CST)
                To: dmtsai@localhost                              <==收件者信箱
                Subject: from vbird                               <==宗旨
                Message-Id: <20061120163329.7A9C3A26B8@localhost> <==给 MTA 看的 ID
                Date: Tue, 21 Nov 2006 00:33:29 +0800 (CST)
                From: dmtsai@localhost (VBird)                    <==发信者 email
                底下为函件内容
                HaHa..
                
                由本来的函件内容下面我们可以看到的确是两部份,在标头局部记载了比拟细致的收、发件者材料, 以及相干的泉源、目的之 MTA 资讯等等。但你要留意的是,谁人‘Received:...’那一行材料是‘会变化的’, 好像后面谈到的 MX 标记,假如一封信由 MUA 传送到 MTA 在由 MTA 传送到 MX 主机后,才传送到终极的 MTA 时, 那么这个 Received: 的材料将会记载每一台经手过的 MTA 资讯喔! 以是你可以藉着这个记载材料渐渐的找回这封信的通报偏向呢!

                别的,这个邮件的标头以及内容的剖析局部,你还可以藉由某些剖析软件来停止过滤, 这部份我们将在背面再渐渐的引见给各人理解喔! ^_^!您先晓得一封邮件至多有这些材料, 当前我们再渐渐的表明啰!


                小标题的图示邮件效劳器搭建条件
                后面谈到 mail server 与 DNS 零碎有很大的相干性,以是假如你想要搭建一台可以连上 Internet 的邮件效劳器时, 你必须要曾经获得正当的 A 与 MX 主机称号,并且最好反解也曾经向您的 ISP 请求修正设定了, 这但是个大条件!不要疏忽他!在底下的训练当中鸟哥以之前 DNS 章节内的设定为根据, 次要的参数是如许的:
                • 邮件主机的次要称号为: linux.vbird.tsai
                • 邮件主机另有又名为 www.vbird.tsai 及 ftp.vbird.tsai 也可以收发函件;
                • 此邮件主机已有 MX 设定,间接指向本人 (linux.vbird.tsai)
                • 这个 linux.vbird.tsai 有个 A 的标记指向 192.168.1.254。
                在实践的邮件效劳器设定当中,上述的几个标记是很紧张的,请自行参考 DNS 章节的引见吧!


                大标题的图示Sendmail 效劳器的浅易搭建引见
                可告竣上述 MTA 功用的软件十分的多,不外在罕见的 Linux distributions 上头则次要以数十年轻牌子的 sendmail (http://www.sendmail.org) 以及近期以来很抢手的 Postfix (http://www.postfix.org) 为主, 我们的 CentOS 4.x 两种软件都有提供,不外次要因此 sendmail 为预设的 MTA 软件,以是我们起首会来引见一下怎样在 CentOS 4.x 下面开放 sendmail 监听一切介面的办法,然后再细心的聊一聊怎样设定 Postfix 吧!


                小标题的图示所需求的套件与套件构造
                既然 CentOS 预设因此 sendmail 为次要的 MTA 软件,而我们的 Linux 又需求 MTA 来监听 lo 这个介面, 以是 sendmail 固然是曾经装置好了!但是 sendmail 还需求许多额定的套件来辅佐处置, 以是你至多也需求底下几个套件才行:
                • sendmail:提供次要的 sendmail 顺序与设定档;
                • sendmail-cf:提供 sendmail.cf 这个设定档的预设整合股料;
                • m4:辅佐将 sendmail-cf 的材料转成实践可运用的设定档。
                这三个套件是有相干性的啦,不外假如你在装置的时分没有选择完好装置以是套件时,sendmail-cf 能够没有装置, 以是请自行应用 rpm 以及 yum 反省看看,并自行装置好他吧!

                简直一切的 sendmail 相干设定档都在 /etc/mail/ 目次下,次要的设定档根本上有这些:
                • /etc/mail/sendmail.cf (/usr/sbin/sendmail 的设定档)
                  这便是 sendmail 的设定档!一切跟 sendmail 有关的设建都是靠他来完成的!不外,这个设定档的内容真不是给人看的, 鸟哥也总是看的‘雾煞煞’搞不懂!以是发起您不要随意手动修正这个文件啊!咦!设定档又不给人改, 那怎样处置额定的设定项目啊? 就交给顺序帮我们修正啊!以是才需求 sendmail-cf 这个套件嘛!看下去就晓得了。

                • /usr/share/sendmail-cf/cf/*.mc
                  这些文件是 sendmail.cf 这个设定档的预设参数材料,下面不是说不要间接手动修正 sendmail.cf 吗, 那假如你想要处置 sendmail.cf 的话,就得要透过这个目次下的参数文件来事后预备设定材料啰! 固然啦,这些预设参数材料文件必须要透过 m4 谁人顺序来转换才行喔!

                • /etc/mail/sendmail.mc (由 m4 指令转换)
                  是的是的!便是他!我们应用 m4 谁人指令并经过指定的预设参数文件来重修 sendmail.cf , 便是藉由这个文件来设定处置的!那我们应该要怎样透过这个文件来重修 sendmail.cf 呢? 复杂的说,你可以参考底下这张图:

                  应用 m4 来转换重修 sendmail.cf
                  图三、应用 m4 来转换重修 sendmail.cf

                  透过 m4 来处置即可,我们要作的便是修正 sendmail.mc 就好了,较为复杂。

                • /etc/mail/local-host-names
                  你的 MTA 能不克不及将信收上去与这个设定有关,鸟哥的典范当中主机称号有三个 (linux.vbird.tsai, www.vbird.tsai, ftp.vbird.tsai),这三个主机称号得都要写入这个文件当中才行喔! 不然将会形成比方: dmtsai@linux.vbird.tsai 可以收信,但是 dmtsai@www.vbird.tsai 却不克不及收信的景象, 固然这两个 email 位址都是传送到统一台主机,不外你的 MTA 能不克不及收下该位址的函件,是需求设定的喔!

                • /etc/mail/access.db (/etc/mail/access, 应用 makemap 处置)
                  用来设定能否可以 Relay 或许是可否接纳函件的材料库文件!由于这个文件是材料库, 以是我们必须要‘修正 /etc/main/access 并运用 makemap 这个指令来树立 access.db 文件’才行! 这个文件很紧张的,我们外部 LAN 可以运用这个设定档来开放 Relay 的权限呢!

                • /etc/aliases.db (/etc/aliases, 应用 newaliases 处置)
                  我们可以树立‘信箱又名’喔!假定你有一个运用者帐号为 dmtsai ,他还想要运用 dermintsai 这个帐号来收信, 你不需求再树立一个 dermintsai 的帐号,间接在这个文件外面设定一一般名,让寄给 dermintsai 的函件间接丢到 dmtsai 的信箱去即可!由于是材料库,以是你是需求‘修正 /etc/aliases 并透过 newaliases 来重修该文件’才行喔!

                • /var/spool/mqueue/ (可用 mailq 察看)
                  这个便是 sendmail 的邮件伫列,当一封信被 MTA 收下后,就会被安排到这里来等候 MDA 的处置。 假如该封函件是本机帐号,那么就会被挪到 /var/spool/mail/运用者帐号 去,然后移除该封函件。 假如该封函件需求 Relay ,那么当函件传送到下一台 MTA 后,函件材料就会自伫列中移除。 不外当一封信临时寄不出去时,该函件就会先被储放在这里,并等候持续实验送出去。 假如你想要晓得现在伫列内储放的函件材料,可以输出 mailq 来查阅喔!
                好了,再来让我们修正 sendmail 这个 MTA ,让她可以连上 Internet 吧!


                小标题的图示开放 sendmail 的监听介面与收信主机称号设定
                现实上我们的 CentOS 预设曾经启动了 sendmail 了,只是他只会承受来自本机的 MTA 要求! 不置信吗?做一下底下的训练吧!

                例题:
                请列出现在你的主机下面,一切在监听 tcp/udp 当中的端口与效劳的对应材料
                答:
                  间接应用 netstat 就可以列出来了,鸟哥的主机可以列出这些材料:
                  netstat -tulnp
                  Active Internet connections (only servers)
                  Proto Recv-Q Send-Q Local Address  Foreign Address  State   PID/Program name
                  tcp        0      0 0.0.0.0:22     0.0.0.0:*        LISTEN  16856/sshd
                  tcp        0      0 127.0.0.1:25   0.0.0.0:*        LISTEN  8036/sendmail: acce

                在下面的例题当中你可以发明到 port 25 是由 sendmail 所启动的,并且‘只监听 127.0.0.1 这个 lo 介面’喔! 以是我们的重点固然便是怎样将监听的介面开启到整个 Internet 上,不然他是无法接纳来自 Internet 的函件的啦! 我们晓得设定档在 /etc/mail/sendmail.cf ,但不要手动改他,你应该要修正的是 sendmail.mc 这个文件啦! 这个文件的设定项目根本语法是如许的:
                  设定元件(`设定项目', `参数一', `参数二')
                每个设定项目与参数右边运用的是数字键1右边谁人按钮 (quote) ,左边则是单引号,别搞错喔! 这个文件的设定项目你可以参考底下的网页阐明:
                我们这里只需改一个中央即可,其他的可以运用预设值就好了喔!
                1. 修正 sendmail.mc 的参数
                [root@linux ~]# vi /etc/mail/sendmail.mc
                # 找究竟下这一行:
                DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
                # 将他改成如许即可:
                DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
                
                2. 备份旧的设定档材料
                [root@linux ~]# cd /etc/mail
                [root@linux mail]# mv sendmail.cf sendmail.cf.back1
                
                3. 开端树立新的 sendmail.cf 设定档
                [root@linux mail]# m4 sendmail.mc > sendmail.cf
                
                当你处置终了之后,重新启动 sendmail 并反省一下 smtp 的监听端口看看:
                [root@linux ~]# /etc/init.d/sendmail restart
                
                [root@linux ~]# netstat -tlunp
                Active Internet connections (only servers)
                Proto Recv-Q Send-Q Local Address  Foreign Address  State   PID/Program name
                tcp        0      0 0.0.0.0:25     0.0.0.0:*        LISTEN  8517/sendmail: acce
                
                瞧!监听的介面终于对整个 Internet 开放了!这个时分实际上你的 MTA 曾经开端运作啰! 而我们的 MTA 既然曾经针对 Internet 来监听了,以是天然你的主机称号得要设定准确才行! 不然主机预设只会承受‘localhost’这个主机称号的函件罢了呐!我们可以如许做:
                [root@linux ~]# vi /etc/mail/local-host-names
                linux.vbird.tsai
                www.vbird.tsai
                ftp.vbird.tsai
                
                [root@linux ~]# /etc/init.d/sendmail restart
                
                改写终了跋文得要重新启动 sendmail 才会正式的失效喔! 每一行有一个主机称号!请记着,将来假如您的主机新增了差别的主机称号, 而且你盼望该主机称号可以用来收发函件,那么要修正 local-host-names !那么什么时分不要将一切的主机称号都给他写到这个 local-host-names 外面去呢?

                由于现在的告白函件真实是太多了,他们会自动的在 Internet 下面搜索一些主机称号, 然后随机到处发送渣滓邮件。假如您的主机有四个称号,每个主机称号都写到 local-host-names 去的话,很能够一封告白信您会‘收到四次’,由于四个主机称号嘛!以是啰! 有的时分照旧不要让全部的主机称号都可以收信是比拟好的呐!


                小标题的图示开放运用 MTA Relay 权限设定 /etc/mail/access
                依据图一的流程剖析当中,我们晓得一个 MTA 最次要的功用便是‘收信’与‘函件转递, Relay’, 上一个大节提到收信的局部次要与监听介面以及主机称号有关,那可否运用 Relay 的才能呢? 这便是我们所需求理解的啦!

                在 Sendmail 的预设状况下只要 sendmail 效劳器本机 (localhost) 可以停止函件转递的功用, 其他任何用户端都无法运用这部 MTA 的!也便是说,除非你在这部 MTA 下面运用 mail 这个指令, 或许是运用 X Window 内的 MUA 来发信,其他的非本机用户都没有 relay 的才能。 哇!那么这部 MTA 另有啥用处啊?以是啊, 我们必需要针对用户真个 Relay 功用停止开放才行!这个设定得要很警惕, 以免你的 MTA 酿成 Open Relay 的不良形态啊!

                sendmail 运用 /etc/mail/access 这个文件来设定开放 Relay 或许是抵御 Relay 的功用, 这个文件内的款式根本上是如许的:
                  标准的范畴或规矩             Sendmail的举措
                  IP/局部IP/主机名/Email等     RELAY/DISCARD/REJECT
                在这两个栏位之间最好运用<tab>按键来作为分开,假定我要让外部的 192.168.1.0/24 这个网络, 另有 140.116.44.202 这部主机,以及在教诲部 (ncku.edu.tw) 所统领的范畴之主机称号都能运用这部 MTA 的话, 你可以如许设定的:
                [root@linux ~]# vi /etc/mail/access
                localhost.localdomain           RELAY
                localhost                       RELAY
                127.0.0.1                       RELAY
                192.168.1                       RELAY
                140.116.44.202                  RELAY
                .edu.tw                         RELAY
                
                [root@linux ~]# cd /etc/mail
                [root@linux mail]# makemap hash access.db < access
                # 下面这个举措在‘制造出 hash 款式的材料库’,请 man makemap 即可理解。
                
                做了这个举措后,整个外部网络以及内部的其他牢固 IP 主机就可以运用你的 MTA 来停止 Relay 啰!不外非牢固 IP 照旧会有点困扰便是了。不外不打紧,我们还可以应用其他认证方法来开放运用权限的。 更多的 access 用法我们将在 Postfix 的章节当中停止引见呐! 在这里你先晓得可以如许玩即可喔! ^_^

                Sendmail 的设定到尔后,你的 MTA 曾经可以收受函件,也可以承受外部或特定 IP 的 Relay 函件, 其他更多的设定方法则可以参考 sendmail 的官方网站吧!固然啦,由于 postfix 原本便是用于相容 sendmail 的, 以是底下持续引见的 postfix 的相干设定办法,你也可以用在 sendmail 上头呐! 反复的不再说!赶忙持续看下去吧!

                大标题的图示用 Postfix 告竣 MTA 功用
                Sendmail 真是个很棒的 MTA 效劳器,不外他也有多少的缺陷,包罗晚期的顺序破绽题目招致的主机平安性缺失; 另有 sendmail 将一切的功用都统合在 /usr/sbin/sendmail 这个顺序当中,招致顺序太大能够会无效能方面的疑虑; 以及完全不具有亲和力的设定档 sendmail.cf .....,以是厥后才会有这个玲珑效能又棒的 postfix 出来啊!


                小标题的图示Postfix 的发生
                Postfix 是由 Wietse Zweitze Venema 老师(http://www.porcupine.org/wietse)所开展的。晚期的 mail server 都是运用 sendmail 搭建的,还真的是‘仅此一家,绝无分号!’!不外,Venema 博士以为 sendmail 固然很好用,但是终究不敷平安,尤其效能下面并不非常的抱负,最大的困扰是....sendmail 的设定档 sendmail.cf 真的是太难明了!关于网管职员来说,要设定好 sendmail.cf 这个文件,真不是人作的任务。

                为了改进这些题目, Venema 博士就在 1998 年应用他老大在 IBM 公司的第一个休假年停止一个方案:‘ 设计一个可以代替 sendmail 的软件套件,可以提供网站办理员一个更疾速、 更平安、并且完全相容于 sendmail 的 mail server 软件!’这个方案还真的乐成了! 并且也乐成的运用在 IBM 外部,在 IBM 内可以说是完全代替了 sendmail 这个邮件效劳器!在这个方案乐成之后, Venema 博士也在 1998 年初次释出这个自行开展的邮件效劳器,并命名为 VMailer。

                不外, IBM 的状师却发明一件事,那便是 VMailer 这个名字与其他已注册的牌号很相似, 如许能够会惹起一些注册下面的困扰。为了防止这个题目,以是 Venema 博士就将这个邮件软件称号改为 Postfix !‘Post 为在什么什么之后’的意思,‘fix 则是修订’的意思,以是 postfix 有 ‘在修订之后’的意思。

                鸟哥团体以为, Venema 老师最早的设想并不是想要‘发明一个全新的 Mail server 软件,而是想要制造一个可以完全相容于 sendmail 的软件’,以是, Venema 老师以为他自行开展的软件应该是‘改进 sendmail 的缺失’,以是才称为 Postfix 吧!取其意为: ‘在 sendmail 之后的改进的邮件效劳器软件!’

                以是啦, Postfix 设计的理念下面,次要是针对‘想要完全相容于 sendmail’所设计出来的一款‘内涵局部完全新鲜’的一个邮件效劳器软件。便是由于这个理念,因而 Postfix 改进了 sendmail 平安性下面的题目,改进了 mail server 的任务服从, 且让设定档内容更具亲和力!因而,你可以随便的由 sendmail 转换到 Postfix 下面!这也是现在 Venema 博士的最后设想啊!

                便是基于这个设想,以是, Postfix 在内部设定文件的援助度,与 sendmail 简直没有两样,异样的援助 aliases 这个文件,异样的援助 ~/.forward 这个文件,也异样的援助 SASL 的 SMTP 邮件认证功用等等! 以是,呵呵!赶忙来学一学怎样搭建 Postfix 这个相称精彩的邮件效劳器吧! ^_^


                小标题的图示所需求的套件与套件构造
                绝对于 sendmail 还需求 m4 以及 sendmail-cf , Postfix 要复杂太多了!你只需装置 postfix 即可。 不外我们的 CentOS 固然同时提供 sendmail 与 postfix ,不外鸟哥极不发起这两者并存喔! 因而你在装置完 postfix 之后,记得将 sendmail 给他移除一下比拟妥当一些些! 以是你可以如许做:
                [root@linux ~]# /etc/init.d/sendmail stop
                [root@linux ~]# yum install postfix
                [root@linux ~]# rpm -e sendmail
                [root@linux ~]# /etc/init.d/postfix start
                
                由于 Linux 零碎至多需求一个 MTA 来让零碎外部的帐号可以传送邮件,以是你必需要先装置 postfix 后才可以移除 sendmail 喔!次序可不要搞错了!不然会跑出一堆相依属性的题目哩! 那么 postfix 有哪些紧张的设定档呢?他次要的设定档都在 /etc/postfix/ 当中, 细致的文件内容就让我们来谈谈:
                • /etc/postfix/main.cf
                  这便是次要的 postfix 设定档啰,简直一切的设定参数都是在这个文件内标准的! 这个文件预设便是一个完好的阐明档了,你可以参考这个文件的内容就设定好属于你的 postfix MTA 呢! 只需修正过这个文件,记得要重新启动 postfix 喔!

                • /etc/postfix/master.cf
                  次要规则了 postfix 每个顺序的运作参数,也是很紧张的一个设定档。 不外这个文件预设曾经很 OK 了,通常不需求变动他。

                • /etc/postfix/access (应用 postmap 处置)
                  与 sendmail 的 /etc/mail/access 具有相反的用处,可以设定开放 Relay 或回绝连线的泉源或目的位址等资讯。 不外这个文件要失效还需求在 /etc/postfix/main.cf 启动这个文件的用处才行。 且设定终了后需求以 postmap 来处置成为材料库文件呢!

                • /etc/aliases (应用 postalias 或 newaliases 均可)
                  差别的 distributions 这个文件安排的目次能够不太一样,在 CentOS 当中为了完全相容于 sendmail 与 postfix , 以是这个文件预设放在 /etc/ 当中,其他版本则能够安排到 /etc/postfix 目次中喔! 这个文件的用法与 sendmail 完全相反喔!
                至于罕见的实行档则有底下这些:
                • /usr/sbin/postconf (查阅 postfix 的设定材料)
                  这个指令可以列出现在你的 postfix 的细致设定材料,包罗零碎预设值也会被列出来, 以是材料量相称的巨大!假如你在 main.cf 外面已经修正过某些预设参数的话,想要仅列出非预设值的设定材料, 则可以运用‘postconf -n’这个参数即可。

                • /usr/sbin/postfix (次要的 daemon 指令)
                  此为 postfix 的次要实行档,你可以复杂的运用他来启动或重新读取设定档:
                  [root@linux ~]# postfix check   <==反省 postfix 相干的文件、权限等能否准确!
                  [root@linux ~]# postfix start   <==开端 postfix 的实行
                  [root@linux ~]# postfix stop    <==封闭 postfix
                  [root@linux ~]# postfix flush   <==强迫将现在正在邮件伫列的邮件寄出!
                  [root@linux ~]# postfix reload  <==重新读入设定档,也便是 /etc/postfix/main.cf
                  
                  要留意的是,每次变动过 main.cf 后,务必重新启动 postfix ,可复杂的运用‘postfix reload’即可。

                • /usr/sbin/postalias
                  设定又名材料库的指令,由于 MTA 读取材料库款式的文件效能较佳,以是我们都市将 ASCII 款式的文件重修为材料库。 在 postfix 当中,这个指令次要在转换 /etc/aliases 成为 /etc/aliases.db 啰!用法为:
                  [root@linux ~]# postalias hash:/etc/aliases
                  # hash 为一种材料库的款式,然后谁人 /etc/aliases.db 就会主动被更新啰!
                  
                • /usr/sbin/postcat
                  次要用在反省放在 queue (伫列) 当中的函件内容。由于伫列当中的函件内容是给 MTA 看的, 以是款式并不是普通我们人类看的懂的笔墨材料。以是这个时分你得要用 postcat 才可以看出该函件的内容。 在 /var/spool/postfix 内有相称多的目次,假定内有一个文件名为 /deferred/abcfile , 那你可以应用底下的方法来盘问该文件的内容喔:
                  [root@linux ~]# postcat /var/spool/postfix/deferred/abcfile
                  
                • /usr/sbin/postmap
                  这个指令的用法与 postalias 相似,不外他次要在转换 access 这个文件的材料库啦!用法为:
                  [root@linux ~]# postmap hash:/etc/postfix/access
                  
                • /usr/sbin/postqueue
                  相似 mailq 的输入后果,比方你可以输出‘postqueue -p’看看就晓得了!
                整个 postfix 的套件构造大抵上是这个样子的,接上去让我们先来复杂的处置一下 postfix 的收发函件功用吧!


                小标题的图示让 Postfix 可监听 Internet 来收发函件
                异样的,我们 CentOS 4.x 的 postfix 照旧预设仅援助本机介面的 smtp 效劳罢了, 以是假如你要对整个 Internet 开放的话,就得要高兴的搞定几个复杂的设定啰! 而简直一切的设定你都可曾经由 /etc/postfix/main.cf 这个文件搞定!这个文件的内容你需求留意的是:
                • ‘#’标记是表明的意思;
                • 一切设定值以相似‘变数’的设定办法来处置,比方 myhostname = linux.vbird.tsai ,请留意等号的双方要赐与空缺字元喔,且第一个字元不行以是空缺,亦即‘my..’要由行首写起;
                • 可以运用‘ $ ’来延伸运用变数设定,比方 myorigin = $myhostname,会即是 myorigin = linux.vbird.tsai;
                • 假如该变数援助两个以上的材料,则运用空缺字元来分开,不外发起运用逗号加空缺字元‘, ’来处置。 比方: mydestination = $myhostname, $mydomain, www.vbird.tsai,意指 mydestination 援助三个材料内容之意。
                • 可运用多行来表现统一个设定值,只需在第一行最初有逗号,且第二行扫尾为空缺字元, 即可将材料延伸到第二行持续誊写;
                • 若反复设定某一项目,则以较晚呈现的设定值为准!
                要让你的 postfix 可以收发函件时,你必须要启动的设定材料有底下这些喔:

              10. myhostname:设定主机称号,需运用 FQDN 喔
              11. 这个设定项目在于设定你的主机称号,且这个设定值被后续许多其他的参数所援用,以是必需要设定准确才行。 你应该要设定成为完好的主机称号。在鸟哥的这个训练当中,我们的主机称号为 linux.vbird.tsai, 以是请设定好他吧:
                [root@linux ~]# vi /etc/postfix/main.cf
                myhostname = linux.vbird.tsai
                
                除了这个设定值之外,另有一个 mydomain 的设定项目,这个项目预设会取 myhostname 拿失第一个‘.’曩昔的主机称号, 而设定出 domain name 。举例来说上头设定终了后,预设的 mydomain 便是 vbird.tsai 啰!你也可以自行设定他。 根本上这两个设定值只是被用来援用的,你只需设定准确即可。

              12. myorigin :发信时所表现的‘发信源主机’项目
              13. 这个项目在设定‘邮件标头下面的 mail from 的谁人位址’, 也便是代表本 MTA 传出去的函件将以此设定值为准喔!假如你在本机寄信时遗忘加上 Mail from 字样的话, 那么就以此值为准了。预设这个项目以 $myhostname 为主的,以是:
                myorigin = $myhostname
                
              14. inet_interfaces :设定 postfix 的监听介面 (綦重要)
              15. 在预设的状况下你的 Postfix 只会监听本机介面的 lo (127.0.0.1) 罢了,假如你想要监听整个 Internet 的话, 请开放成为对外的介面,或许是开放给全部的介面,罕见的设定办法为:
                inet_interfaces = all
                
                由于假如有反复设定项目时,会以最晚呈现的设定值为准,以是当你设定为‘inet_interfaces = all’时,请将 inet_interfaces = localhost 那一行表明失啊!

              16. mydestination :设定‘可以收信的主机称号’ (綦重要)
              17. 这个设定项目很紧张喔!他就像 sendmail 内的 local-host-names 一样, 你的主性能够收上去的函件中,Mail to 写的主机称号必需要在这个设定值当中呈现才行。 在我们这个训练当中这部主机有三个名字,linux.vbird.tsai, www.vbird.tsai 及 ftp.vbird.tsai 都需求写入喔!
                mydestination = $myhostname, localhost.$mydomain, localhost,
                     www.vbird.tsai, ftp.vbird.tsai
                
                瞧见否?假如想要将统一个设定写成两行时,前一行最初最好运用逗号‘ , ’来离隔较佳。 由于 $myhostname 曾经是 linux.vbird.tsai 了,以是不用改写。别的,假如你对 sendmail 的 local-host-names 情有独钟而想要持续运用该文件时,可以如许做:
                mydestination = /etc/postfix/local-host-names
                
                然后在该文件内参加一切你想要参加的主机称号即可!普通来说,不发起你额定树立 local-host-names 这个文件啦, 间接写入 main.cf 即可说!特殊注意的是,假如你的 DNS 外头的设定有 MX 标记的话,那么请将 MX 指向的谁人主机称号肯定要写在这个 mydestination 内, 不然很容易呈现错误讯息喔!特殊的给他留意这一点! 普通来说,运用者最常发作错误的中央就在这个设定外头呢!

              18. mynetworks_style :设定‘信托网络’的一项目标
              19. 这个设定值在规则‘与主机在统一个网络的可信托用户端’的意思!举例来说,鸟哥的主机 IP 是 192.168.1.254,假如我置信整个地区网络内 (192.168.1.0/24) 的用户的话,那我可规则此设定值为‘ subnet ’呐! 不外,普通来说,由于底下的 mynetworks 会代替这个设定值, 以是不设定也没有干系喔!假如要设定的话, 最好设定成为 host 即可 (亦即仅信托这部 MTA 主机罢了)。
                mynetworks_style = host
                
              20. mynetworks :规则信托的用户端 (綦重要)
              21. 你的 MTA 能不克不及帮助停止 Relay 与这个设定值最有干系!举例来说,我要开放本机与外部网络的 IP 时, 就可以如许停止设定:
                mynetworks = 127.0.0.0/8, 192.168.1.0/24
                
                还记得我们在 sendmail 内因此 access 来停止 relay 的设定吧? 那假如你想要连续这个文件的设定呢?那鸟哥可以发起你将上述的材料改写成如许:
                mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access
                
                然后你只需再树立 access 之后重整成材料库后,嘿嘿!就可以设定 Relay 的用户啰!

              22. relay_domains :标准可以帮助 relay 的下一台 MTA 主机位址
              23. 绝对于 mynetworks 是针对‘信托的用户端’而设定的,这个 relay_domains 则可以视为‘针对卑鄙 MTA 主机’而设定的。举例来说,假如你这部主机是 mail.kiki.vbird.tsai 的 MX 主机时, 那你就得要在 relay_domains 设定针对整个 kiki.vbird.tsai 这个范畴的目的函件停止转递才行。 在预设的状况下,这个设定值是 $mydestination 罢了啦。

                你必须要留意的‘Postfix 预设并不会转递 MX 主机的函件’,意思便是说:假如你有两部主机,一台是下游的 MTAup ,一台是卑鄙的 MTAdown ,而 MTAdown 标准的 MX 主机是 MTAup,由 DNS 的 MX 设定值与函件通报偏向我们晓得任何想要寄给 MTAdown 主机的函件, 都市先颠末 MTAup 来转递才行!此时假如那部 MTAup 没有开启帮 MTAdown 停止 relay 的权限时, 那么任何传给 MTAdown 的函件将‘全部都被 MTAup 所退回’!今后 MTAdown 就无法收就任何函件了。

                上一段的阐明请您特殊再想一想,由于假如你在至公司效劳并且你的公司上、卑鄙均有 mail server 时, 而且也有设定 MX 的情况下,嘿嘿!这个 relay_domains 就很紧张啦!下游的 MTA 主机必须要启动这个设定。 普通来说除非你是某部 MTA 主机的 MX 源头,不然这个设定项目可以疏忽不设定他。 而假如你想要帮你的用户端转递函件到某部特定的 MTA 主机时,这个设定项目也是可以设定的啦。 预设请您保存预设值即可。
                relay_domains = $mydestination
                
              24. alias_maps :设定邮件又名
              25. 只需指定到准确的文件去即可,这个设定值可以保存预设值啊:
                alias_maps = hash:/etc/aliases
                alias_database = hash:/etc/aliases
                
                在理解上述的设定后,以鸟哥的典范来看的话,我有变动过的设定值以及相干文件是如许处置的:
                [root@linux ~]# vi /etc/postfix/main.cf
                myhostname = linux.vbird.tsai
                myorigin = $myhostname
                inet_interfaces = all
                mydestination = $myhostname, localhost.$mydomain, localhost,
                     www.vbird.tsai, ftp.vbird.tsai
                mynetworks = 127.0.0.0/8, 192.168.1.0/24, hash:/etc/postfix/access
                relay_domains = $mydestination
                # 其他的设定值就先保存预设值即可啊!
                
                [root@linux ~]# postmap hash:/etc/postfix/access
                [root@linux ~]# postalias hash:/etc/aliases
                
                然后预备来启动啦!你可以如许处置喔:
                1. 先反省设定档的语法能否有错误
                [root@linux ~]# postfix check   <==假如没有呈现任何讯息,表现没有题目。
                
                2. 启动与察看 port number
                [root@linux ~]# /etc/init.d/postfix restart
                [root@linux ~]# netstat -tlunp | grep ':25'
                tcp  0   0 0.0.0.0:25    0.0.0.0:*   LISTEN   20850/master
                
                很复杂吧!如许就设定妥当了,你的 Postfix 曾经可以开放用户端停止转递,而且也可以收受函件啰! 不外,究竟在预设的状况下我们的 postfix 可以收下哪些函件?又可以针对哪些设定值的内容停止转递呢? 这就得要参考下一大节的阐明了。


                小标题的图示函件传送流程与收信、relay 等紧张看法
                我想,您关于 MTA 的设定与收发函件应该有肯定水平的观点了,不外要妥善设定好你的 MTA 时, 尤其是想要理解到整部 MTA 是怎样收、发函件时,你最好照旧要晓得‘我这部 MTA 怎样承受泉源主机所传来的函件,以及将函件转递到下一台主机去’的整个流程啊。 普通来说一封邮件传送会颠末很多的流程为:
                1. 送信端与收信端两部主机间会先颠末一个握手 (ehlo) 的阶段,此时送信端被记载为发信泉源(而不是 mail from)。 经过握手后就可以停止函件标头 (header) 的传送;

                2. 此时收信端主时机剖析标头的资讯,若函件之 Mail to: 主机称号为收信端主机,且该称号契合 mydestination 的设定,则该函件会开端被收下至伫列,并进一步送到 mailbox 当中; 若不契合 mydestination 的设定,则停止连线且不会停止函件内容 (body) 的传送;

                3. 若 Mail to: 主机称号非为收信端自身,则开端停止转递 (relay) 的剖析。

                4. 转递进程起首剖析该函件的泉源能否契合信托的用户端 (这个用户端为步调 1 所记载的发信主机喔) ,亦即泉源能否契合 mynetworks 的设定值, 若契合则开端收下函件至伫列中,并等候 MDA 将函件再转递出去,若不符 mynetworks 则持续下一步;

                5. 剖析函件泉源或目的能否契合 relay_domains 的设定,若契合则函件将被收下至伫列,并等候 MDA 将函件再转递出去;

                6. 若这封信的标头材料都分歧乎上述的标准,则停止连线,并不会承受函件的内容材料的。
                整个流程有点像底下如许:

                邮件传输偏向
                图四、邮件传输偏向

                也便是说标头剖析经过后,你的函件内容才会开端上传到主机的伫列,然后透过 MDA 来处置该函件的流向。 而不是将函件完好的传送到主机后才开端剖析的喔!这个得要特殊留意呐!而透过上述的流程后, 在暂不思索 access 以及 MDA 的剖析机制中,一台 MTA 想要准确的收、发函件时,电子邮件必须要契合:
                • 收信方面:必须契合底下需求:
                  1. 发信端必须契合 $inet_interfaces 的设定;
                  2. 函件标头之收件者主机称号必须契合 $mydestination 的设定, 或许收件主机称号需求契合 $virtual_maps (与假造主机有关) 的设定;

                • 转递方面:必须契合底下需求:
                  1. 发信端必须契合 $inet_interfaces 的设定;
                  2. 发信端泉源必须为 $mynetworks 的设定;发信端泉源或函件标头之收件者主机称号契合 $relay_domains 之设定内容。
                异样的原理与想法你可以将他用在 sendmail 的设定当中喔! ^_^!不外许多渣滓信倒是藉由这个预设的收发管道来发送, 怎样说呢?请看底下的剖析:

                例题:
                在我的主机下面居然发明如许的告白信,那便是‘应用我的主机发送告白信给我本人!’ 为什么如许也可以呢?
                答:
                  起首,你必须要熟习一下上述的流程,在第 2 个步调当中我们晓得,当主机收到一封信且这封信的目的是本人, 而且也契合 mydestination 的设定时,该函件就会被收上去而不用验证用户端能否来自于 mynetworks 了。 以是说,任何人都可以用这个流程来寄信给你啊。不外,你的 MTA 并不是 open relay 啦, 不会帮人家发送告白信的,不必担忧。

                例题:
                我的主机明显没有 Open relay ,但许多其他的 MTA 办理员发信给我,说我的主机的某个帐号继续发送告白信, 但是我的主机明显没有谁人帐号啊!这是怎样回事?
                答:
                  细心看一下游程的步调 1 与 2 ,确认该封信可否被收上去与发信端及收信端主机称号有关。 而我们晓得在邮件的 header 外面另有一个 mail from 的标头设定项目,这个标头设定是我们在查阅邮件时看到的‘回邮位址’, 这个材料是可以伪造的!并且他与收发函件的材料有关!以是,您应该要见告对方 MTA 办理员, 请他提供细致的 log 材料,才干够判别该封信能否由你的主机所发送出去的。

                  普通来说,现在的告白业者许多都是应用这种欺敌的方法来处置的,以是您必须要请对方提供细致的 log file 材料以供检验才行喔!


                小标题的图示设定邮件主机运用权限与过滤机制 /etc/postfix/access
                根本上,指定了 Postfix 的 mynetworks 就可以让运用者 relay 了,不外假如你按照鸟哥上述的方法来设定你的 mynetworks 的话,那么我们还可以应用 access 这个文件来额定办理我们的函件过滤呢! 根本的 access 语法再阐明一次:
                  标准的范畴或规矩             Postfix 的举措
                  IP/局部IP/主机名/Email等     ACCEPT/REJECT
                假定你想要让 140.116.44.202 另有 .edu.tw 可以运用这部 MTA 来转递函件,且不许 av.com 以及 192.168.100.0/24 这个网络的运用时,可以如许做:
                [root@linux ~]# vi /etc/postfix/access
                140.116.44.202		ACCEPT
                .edu.tw			ACCEPT
                av.com			REJECT
                192.168.100		REJECT
                # ACCEPT 表现可承受,而 REJECT 则表现回绝。
                
                [root@linux ~]# postmap hash:/etc/postfix/access
                
                用这个文件设定最大的益处是,你不用重新启动 postfix ,只需将材料库树立好,立即就失效了! 不外这个文件的进阶设定还需求 main.cf 内的其他标准有设定才行!假如只是之前 $mynetworks 的设定值时, 你只能应用上述的方法来开放 relay 的才能。不外,至多他可以让我们的设定简化啰! ^_^


                小标题的图示设定邮件又名
                想一想,你的主机外面不是有许多零碎帐号吗?比方 named, apache, mysql..., 那么以这些帐号实行的顺序如有讯息发作时,他会将该讯息以 email 的方法传给谁? 准绳上是传给 root 这个办理员。不外,为啥会传给 root 啊?这是由于其他的零碎帐号并没有暗码可登入, 天然也没有接纳邮件的须要。以是如有邮件就给零碎办理员啰。不外,我们的 MTA 怎样晓得这些函件要传给 root ? 这就得要 aliases 这个邮件又名设定档来处置啦!

                在你的 /etc/aliases 文件内,你会发明相似底下的字样:
                [root@linux ~]# vi /etc/aliases
                mailer-daemon:  postmaster
                postmaster:     root
                bin:            root
                daemon:         root
                adm:            root
                ....底下省略....
                
                右边是‘又名’左边是‘实践存在的运用者帐号或许是 email address’!便是透过这个设定值, 以是让我们可以将一切零碎帐号所属的函件统统丢给 root 啊!好,我们如今将他扩展化,假设你的 MTA 内有一个实践的帐号称号为 dmtsai ,这个运用者还想要运用 dermintsai 这个称号来收他的函件, 那么你可以如许做:
                [root@linux ~]# vi /etc/aliases
                dermintsai:     dmtsai
                # 右边是你额定所设定的,左边则是实践接纳这封信的帐号!
                
                [root@linux ~]# postalias hash:/etc/aliases
                
                今后之后不管是 dmtsai@linux.vbird.tsai 照旧 dermintsai@linux.vbird.tsai 都市将函件丢到 /var/spool/mail/dmtsai 这个信箱当中喔!很方便吧!

              26. 让零碎办理员的普通帐号可接纳 root 的信
              27. 假定你是零碎办理员,而你常用的普通帐号为 dmtsai ,但是零碎堕落时的紧张函件都是寄给 root 啊, 偏偏 root 的函件不克不及被间接读取....以是说,假如可以将‘给 root 的信也转寄一份给 dmtsai ’的话, 那就太好了!可以到达吗?固然可以!你可以如许做:
                [root@linux ~]# vi /etc/aliases
                root:		root,dmtsai
                # 函件会传给 root 与 dmtsai 这两个帐号!
                
                root:		dmtsai
                # 今后 root 收不到信了,都由 dmtsai 来承受!
                
                [root@linux ~]# postalias hash:/etc/aliases
                
                下面那两行你可以择一运用,看看 root 要不要保存他的函件都可以的!实在如许一来, 你的 dmtsai 可以收到 root 的信,且 root 本人也可以‘备份’一份在他的信箱内,比拟平安啦!

              28. 发送群组寄信功用
              29. 想像一个状况,假如你是学校的教师,你固然只带一班,但是‘每年都一班’时,假如有一天你要将信发给一切的先生, 那在写 email 的标头时,能够就会头昏昏的了!这个时分你可以如许做: (假定主机上先生的帐号为 std001, std002... )
                [root@linux ~]# vi /etc/aliases
                student95:	std001,std002,std003,std004...
                
                [root@linux ~]# postalias hash:/etc/aliases
                
                云云一来只需寄信到这部主机的 student95 这个不存在的帐号时, 该封信就会被辨别存到各个帐号外头去,办理下面能否很方便啊! ^_^

                现实上,邮件又名除了填写本人主机下面的实体用户之外,实在你可以填写内部主机的 email 喔! 比方你要将本机的 dermintsai 谁人不存在的用户的函件除了传给 dmtsai 之外,还要外传到 dmtsai@mail.kiki.vbird.tsai 时,可以如许做:
                [root@linux ~]# vi /etc/aliases
                dermintasi:	dmtsai,dmtsai@mail.kiki.vbird.tsai
                
                [root@linux ~]# postalias hash:/etc/aliases
                
                很方便吧!更多的功用就等待您自行开掘啰!


                小标题的图示邮件转递 ~/.forward
                固然 /etc/aliases 可以帮我们到达邮件又名设定的益处,不外 /etc/aliases 是只要 root 才干修正的文件权限, 那我们普通运用者假如也想要停止邮件转递时,那该如之奈何?不要紧,可以透过本人家目次下的 .forward 这个文件喔! 举例来说,我的 dmtsai 这个帐号所接纳到的函件除了本人要保存一份之外,还要传给本机上的 vbird 以及 dmtsai@mail.kiki.vbird.tsai 时,那你可以如许做设定:
                [dmtsai@linux ~]$ vi .forward
                # 留意!我的身份如今是 dmtsai 这个普通身份,并且在他的家目次下!
                dmtsai
                vbird
                dmtsai@mail.kiki.vbird.tsai
                
                [dmtsai@linux ~]$ chmod 644 .forward
                
                记得这个文件内容是一行一个帐号 (或 email) ,并且权限方面十分紧张:
                • 该文件地点运用者家目次权限,其 group、other 不行以有写入权限。
                • .forward 文件权限,其 group、other 不行以有写入权限。
                云云一来这封信就会开端转递啰!风趣吧! ^_^


                小标题的图示观察函件伫列资讯
                说假话,设定到此为止我们的 postfix 应该可以应付普通小型企业之 mail server 的用处了! 不外,有的时分终究由于网络的题目或许是对方主机的题目,能够招致某些函件无法送出而被暂存在伫列中, 那我们怎样理解伫列当中有哪些邮件呢?另有,在伫列当中等候送出的函件是怎样送出的呢?
                • 假如该封信在五分钟之内无法寄出,则通常零碎会收回一封‘正告信’给原发信者, 见告该封邮件尚无法被寄送出去,不外,零碎仍会继续的实验寄出该封邮件;
                • 假如在四小时分仍无法寄出,零碎会再次的收回正告信给原发信者;
                • 假如继续停止五天都无法将函件送出,那么该封邮件就会退回给原发信者了!
                固然啦,某些 MTA 曾经取消了正告信的寄发,不外准绳上,假如函件无法即时寄出去的话 MTA 照旧会高兴实验 5 天的,假如接上去的 5 天都无法送出时,才会将原函件退回给发信者。 普通来说,假如 MTA 设定准确且网络没有题目时,应该是不行能会有函件被放在伫列当中而传不出去的, 以是假如发明有函件在伫列时,固然得要细心的瞧一瞧啰!反省伫列内容的办法可以运用 mailq , 也可以运用 postqueue -p 来反省的:
                [root@linux ~]# postqueue -p
                Mail queue is empty
                
                若您的邮件云云表现时,祝贺您,没有什么题目邮件在伫列当中。不外假如你将 postfix 封闭, 并实验发一封信给任何人,那就能够会呈现如下的画面啦:
                [root@linux ~]# /etc/init.d/postfix stop
                [root@linux ~]# echo "test" | mail -s "testing queue" root
                [root@linux ~]# postqueue -p
                postqueue: warning: Mail system is down -- accessing queue directly
                -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
                9C2D1A26AC       71 Thu Nov 23 14:59:31  root
                                                         root
                
                -- 0 Kbytes in 1 Request.
                # 第一行就阐明了无法寄出的缘由为 Mail system is down 啦!
                # 然后才呈现无法寄出的函件资讯!包罗泉源与目的喔!
                
                输入的资讯次要为:
                • Queue ID:表现此封邮件伫列的代表号 (ID),这个号码是给 MTA 看的,我们看不懂没关系;
                • Size :这封信有多大容量 (bytes) 的意思;
                • Arrival Time:这封信什么时分进入伫列的,而且能够会阐明无法立刻传送出去的缘由;
                • Sender/Recipient:送信与收信者的电子邮件啰!
                现实上这封信是安排在 /var/spool/postfix 外面,由于函件内容曾经编码为给 MTA 看的材料陈列, 以是你可以运用 postcat 来读出原函件的内容喔!比方如许做 (留意看档名与 Queue ID 的对应!):
                [root@linux ~]# cd /var/spool/postfix/maildrop
                [root@linux maildrop]# postcat 9C2D1A26AC  <==这个档名便是 Queue ID
                淫乱 ENVELOPE RECORDS 9C2D1A26AC 淫乱 <==阐明伫列的编号啊
                sender_fullname: root               <==底下两个为发信者台甫与 email
                sender: root
                recipient: root                     <==收信者为谁的意思啊!
                淫乱 MESSAGE CONTENTS 9C2D1A26AC 淫乱 <==底下则是函件的内容喔!
                To: root
                Subject: testing queue
                
                test
                淫乱 HEADER EXTRACTED 9C2D1A26AC 淫乱
                淫乱 MESSAGE FILE END 9C2D1A26AC 淫乱
                
                云云一来你就晓得现在我们的 MTA 主机有几多未送出的函件,另有未送出函件的内容你也可以追踪的到了! 很不错,对吧!不外,假如你想要我们的 postfix 立即实验将这些在伫列当中的函件寄出去,那又该如之奈何? 你有几个作法啦,可以重新启动 postfix ,也可以透过 postfix 的举措来处置,比方:
                [root@linux ~]# /etc/init.d/postfix restart
                [root@linux ~]# postfix flush
                
                鸟哥团体比拟发起运用 postfix flush 啰!自行参考看看先! ^_^


                小标题的图示设定 relay 的进阶功用 smtpd_recipient_restrictions
                我们在前几节引见过一封邮件进入 MTA 时该函件能否会被承受的几个大准绳, 另有与 postfix 设定值相干的几个紧张参数。现实上一封邮件在 postfix 外面可否被转递 (relay) 与 /etc/postfix/main.cf 外面的 smtpd_recipient_restrictions 这个设定值有关啦! 这个设定值预设不存在于 main.cf 当中,你可以运用‘ man 5 postconf ’找到这个设定值的阐明。

                smtpd_recipient_restrictions 就字面上的意思来说是‘SMTPD 这个 daemon 的承受者 (便是本人啊) 之限定’, 以是这个设定项目可以指定‘当要 relay 时,MTA 应该要参考什么设定值;以及当要承受本机函件时, 应该要参考哪些设定项目’的意思, 在预设的状况下这个设定值只要两个项目,辨别是‘ permit_mynetworks, reject_unauth_destination ’, 是有‘次序’之分的喔!

                上述的预设参数值终极形成后面提到的函件传送流程啦! 不外偶然你能够需求添加几个新功用,举例来说,你想要让 Internet 下面的任何一个 IP 都可以透过你的 MTA 来寄信时,那得要开启所谓的 SMTP 认证机制,此时你就得要将该认证机制写入这个设定参数当中才行! 别的,假如你想要回绝黑名单的泉源与目的主机,那也是得要在这个参数前面参加额定的材料啊! 总之,你需求对这个参数很理解便是了!更多相干的功用我们会在后续加以引见的啦!


                大标题的图示让你的 MTA 承受 MUA 的读信要求:POP/IMAP等协议
                不论你的 MTA 运用的是 sendmail 照旧 postfix ,你照旧得要共同 POP3/IMAP 这个提供运用者端来收信的协议才行! 在晚期的零碎当中, POP3 运用的是 imap 这个套件提供的功用,不外迩来提供此一协议的套件许多, 每种零碎都能够不太相反。举例来说,我们的 CentOS (Red Hat 零碎) 运用的是鸽舍 (dovecot) 软件套件, 至于 SuSE 则提供 qpopper 这个套件说。

                启动单纯的 POP3 是很复杂的啦,你得要先确定曾经装置了 dovecot 这个软件。 而这个软件的设定档只要一个,便是 /etc/dovecot.conf 。我们仅要启动 pop3 罢了, 以是可以如许设定即可:
                [root@linux ~]# vi /etc/dovecot.conf
                # 找究竟下这一行,约莫是在第 14 行左右的中央
                #protocols = imap imaps
                # 将他改成底下这个样子:
                protocols = pop3
                
                # 找究竟下这一行,约莫是在第 22 行左右的中央
                pop3_listen = [::]
                # 假如只想要承受 IPv4 的位址,将他改成底下这个样子:
                pop3_listen = *
                
                改完之后你就可以启动 dovecot 啰!而且反省看看 port 110 有没有启动啊?
                [root@linux ~]# /etc/init.d/dovecot start
                [root@linux ~]# netstat -tlnp | grep ':110'
                tcp 0  0 0.0.0.0:110   0.0.0.0:*  LISTEN   25335/dovecot
                
                耶!搞定!如许就可以提供运用者来收发函件啦!真是不错啊!不外记得喔,我们只提供根本的密码 pop3 传输罢了, 假如想要启动其他如 pop3s (传输加密机制) 协议时,就得要额定的设定啰! 接上去让我们看看用户端怎样运用我们的邮件效劳器吧~ ^_^


                大标题的图示用户真个收发信软件 (MUA)
                设定 Mail server 不是拿来美观的,固然是要好好的使用他啰!使用 mail server 有两种次要的方法, 你可以间接登入 Linux 主机来操纵 MTA ,固然也可以透过用户真个 MUA 软件来收发函件, 底下我们辨别引见这两种方法啰!


                小标题的图示Linux mail
                在 Unix like 的作业零碎当中都市存有一支可以停止收发函件的软件,那便是‘ mail ’这个指令。 这个指令是由 mailx 这个套件所提供的,以是您得要先装置这个套件才行。 别的,由于 mail 是 Linux 零碎的功用,以是即便你的 port 25 (smtp) 没有启动, 他照旧可以运用的,只是该封邮件就只会被放到伫列,而无法寄出去啰!^_^!底下我们来谈一谈最复杂的 mail 用法吧

              30. 用 mail 间接编辑笔墨邮件与寄信
                mail 的用法很复杂,便是应用‘ mail [email address] ’的方法来将函件寄出去, 谁人 [email address] 可以是对外的邮件位址,也可以是本机的帐号。假如是本机帐号的话,可以间接加帐号称号即可。 比方:‘ mail root ’或‘ mail somebody@his.host.name ’。假如是对外寄信的时分, 函件预设的‘ Mail from ’就会填写 main.cf 内谁人 myorigin 变数的主机称号啰! 先来试看看吧!寄给 dmtsai@linux.vbird.tsai 先:
                [root@linux ~]# mail dmtsai@linux.vbird.tsai
                Subject: Just test        <==这里填写函件标题
                This is a test email.     <==底下为函件的内容!
                bye bye !
                .                         <==留意,这一行只要小数点!代表完毕输出之意!
                Cc:                       <==密件正本啦!
                
                如许就可以将函件寄出去了!别的,晚期的 mail server 是可以承受 IP 寄信的,举例来说: mail dmtsai@[192.168.1.254] ,记得 IP 要用中括号包起来。不外由于遭到渣滓邮件的影响, 如今这种方法简直都无法乐成的将函件寄出了。

              31. 应用曾经处置终了的‘纯笔墨档’寄出函件
                这可不是‘附件夹带’的方法!由于在 mail 这个顺序外面编辑函件是个很苦楚的差事, 你不克不及够按上下左右键来回到方才边极有错误的中央,很伤头脑。此时我们可以透过规范输出来处置! 假如你遗忘‘ < ’代表的意义,请回到根底学习篇书中的 Bash shell 章节好好瞧瞧先。 举例来说你要将家目次的 .bashrc 寄给他人,可以如许做:
                [root@linux ~]# mail -s 'My bashrc' dmtsai < ~/.bashrc
                
              32. 开端接纳函件
                寄信还比拟复杂,那么收信呢?异样的收信照旧运用 mail。间接在提示字元之后输出 mail 时,会自动的捉取运用者在 /var/spool/mail 底下的邮件信箱 (mailbox),比方我 dmtsai 这个帐号在输出 mail 后,就会将 /var/spool/mail/dmtsai 这个文件的内容读出来并表现到荧幕上,后果如下:
                [root@linux ~]# mail
                Mail version 8.1 6/6/93.  Type ? for help.
                "/var/spool/mail/dmtsai": 1 message 1 unread
                >U  1 root@linux.vbird.tsai  Fri Nov 24 11:34  32/764   "My bashrc"
                &  <==这个是 mail 软件的提示字元,可以输出 ? 来观察可用指令
                
                在下面的话面中,表现 dmtsai 有一封信,且会附上该函件的发信者与标题及收信工夫等。 你可以用的指令有这些:
                • 读信: (间接按 Enter 或输出数字后 enter)
                  有看到‘>’谁人标记吧!那表现现在 mail 地点的邮件栏位,你可以间接输出 Enter 即可看到该封函件的内容! 别的,你也可以在‘&’之后的游标地位输出号码,就可以看该封函件的内容了! (注:假如继续按 Enter ,则会自‘ > ’标记地点的邮件逐次向后读取每封函件内容!)

                • 表现标题: (间接数入 h 或输出 h 数字)
                  假如要重新表现每封信的标题,可以输出 h 即可;

                • 回答邮件: (间接输出 R )
                  假如要回答现在‘ > ’标记地点的邮件, 间接按下‘R’即可进入方才后面引见过的 mail 笔墨编辑画面啰!你可以编辑函件后传归去啰!

                • 删除邮件: (输出 d 数字)
                  按下‘ d## ’即可删除邮件!比方我要删撤除第 2 封邮件,可以输出‘d2’假如是要删除第10-50封邮件,可以输出‘d10-50’来删除喔! 请记得,假如有删除邮件的话,分开 mail box 时,要运用‘q’才行!

                • 贮存邮件到文件: (输出 s 数字 档名)
                  假如要将邮件材料存上去,可以输出‘ s ## filename’,比方我要将下面第一封邮件存上去,可以输出‘ s 1 uuencode ’即可将第一封邮件内容存成 uuencode 这个文件!

                • 分开 mail: (输出 q 或 x )
                  要分开 mail 可以输出 q 或许是 x ,请留意‘输出 x 可以在不变动 mail box 的状况下分开 mail 顺序,不论你方才有没有运用 d 删除材料;运用 q 才会将删除的材料移除,而且会将一切已读过的函件内容转存到你家目次下的 mbox 文件!’也便是说,假如你不想变动 mail box 那就运用 x 或 exit 分开,假如想要使方才移除的举措失效,就要运用 q 啦!不外,运用 q 之后,只要未读的函件才会保存在 /var/spool/mail/accout 外面,其他已读的材料都市被存入 ~/mbox 当中!比方 /home/dmtsai/mbox 为贮存 dmtsai 已读过的函件!

                • 恳求帮忙
                  关于 mail 更细致的用法可以输出 help 就可以展现现在的 mail 一切功用!
                下面是浅易的 mail 收信功用!不外,假如分开 mail 时按下 q ,不是会有函件转存到 ~/mbox 这个邮件信箱吗?那么我要怎样读取这个文件内的函件材料呢?可以复杂的运用这个方法来读取:
                [root@linux ~]# mail -f ~/mbox
                
              33. 以‘附件夹带’的方法寄信
                后面提到的都是函件的内容,那么有没有能够以‘附件’的方法来通报文件? 是可以的,不外你需求 uuencode 这个指令的帮助,在 CentOS 当中这个指令属于 sharutils ,请先应用 yum 来装置他吧!接上去你可以如许运用:
                [root@linux ~]# [应用 uuencode 编码 ] | [应用 mail 寄出去]
                [root@linux ~]# uuencode [实践文件] [函件中的档名] | mail -s '标题' email
                
                典范一:将 ~/.bashrc 以附件夹带的方法寄给 dmtsai
                [root@linux ~]# uuencode ~/.bashrc bashrc | mail -s 'test encode' dmtsai
                
                如许就能寄出去了,不外,假如收下这封函件呢?异样的我们得要透过解码器来解码啊! 你得先将该文件存上去,然后如许做:
                [root@linux ~]# mail
                Mail version 8.1 6/6/93.  Type ? for help.
                "/var/spool/mail/dmtsai": 2 messages 2 unread
                >U  1 root@linux.vbird.tsai  Fri Nov 24 11:34  32/764   "My bashrc"
                 U  2 root@linux.vbird.tsai  Fri Nov 24 11:52  24/904   "test encode"
                & s 2 test_encode
                "test_encode" [New file]
                & exit
                
                [root@linux ~]# uudecode test_encode -o decode
                                             加密档         输入档
                
                固然 mail 这个指令不是挺好用的,不外至多他可以提供我们在 Linux 纯笔墨形式下的一个复杂的收发函件功用! 我们最好照旧熟习一下吧! ^_^


              34. 小标题的图示Linux telnet
                方才的 mail 也算是一支复杂的软件在停止收发函件,那假如你想要间接透过 smtp 以及 pop3 来收发函件呢? 实在你可以透过 telnet 的功用来间接连线到该效劳上头! 不外,由于完全得要敲击指令来处置,以是底下的训练真的仅做为参考用啦!
                先来训练寄信看看:
                [root@linux ~]# telnet localhost 25
                Trying 127.0.0.1...
                Connected to localhost.
                Escape character is '^]'.
                220 linux.vbird.tsai ESMTP Postfix
                ehlo localhost   <==停止握手!很紧张!
                250-linux.vbird.tsai  <==底下为本 SMTP 效劳所提供的功用
                250-PIPELINING
                250-SIZE 10240000     <==单封函件的最大容量!
                250-VRFY
                250-ETRN
                250 8BITMIME
                mail from: "VBird"<dmtsai@linux.vbird.tsai> <==设定泉源位址
                250 Ok
                rcpt to: <root@linux.vbird.tsai>            <==设定收信位址
                250 Ok
                data                                        <==确定内容撰写开端
                354 End data with <CR><LF>.<CR><LF>
                This is a test mail    <==开端写内容啦!
                Just test ! bye bye!
                .                      <==分开不要遗忘的一个小数点!
                250 Ok: queued as CC8CFA26AC
                quit
                
                如许就可以将信安排到伫列当中,而且等候寄出啦!比拟费事的是你必须要手动输出 header 与 body 的一切项目, 包罗‘mail from:’‘rcpt to:’等等,且在这两个设定值前方的 email 必须要以括号圈起来,比方:
                  MAIL FROM: usersname<userid@hostname.domainname>
                  MAIL FROM: "users name"<userid@hostname.domainname>
                别的很多 MTA 现在都市限定再运用 MAIL FROM 时要先运用 HELO或许是 EHLO 先打招呼过,要否则会不容许停止后续相同。 好了,那么间接收信呢?可以如许做!
                [root@linux ~]# telnet localhost 110
                Trying 127.0.0.1...
                Connected to localhost.
                Escape character is '^]'.
                +OK dovecot ready.
                user dmtsai         <==输出你的帐号啊!
                +OK
                pass your_password  <==输出你的暗码啊!
                +OK Logged in.
                list                <==列出你有的函件啊!
                +OK 3 messages:       <==底下为函件的材料,共有三封
                1 912
                2 1016
                3 675
                .
                retr 2              <==开端接纳第二封函件内容之意
                +OK 1016 octets
                ....函件内容输入省略....
                quit                <==分开 telnet 啰
                +OK Logging out.
                
                如许就可以透过 telnet 连线到本机上头停止收、发函件的功用了!不外,真是欠好用啊! 以是我们底上去引见一个可以跨平台的视窗介面软件,学这一套就好了, 由于他是跨平台,以是您可以在任何作业零碎下面运用这套好用的咚咚呐!


                小标题的图示Thunderbird 好用的跨平台 (Windows/Linux X) 软件
                自在软件最大的益处之一便是该软件大多可以停止移植,也便是在任何作业零碎下面简直都可以实行该软件的意思。 因而学习自在软件的益处便是,你不用由于转换作业零碎而学习差别的操纵情况! 邮件运用者介面软件 (MUA) 也有自在软件了!那便是 Mozilla 基金会推出的 ThunderBird (雷鸟) 这个好用的咚咚, 你可以在底下的网址下面找到繁体中文的套件:
                有鉴于现在用户端照旧以 Windows 作业零碎为大宗,以是底下的阐明次要是在 Windows XP (sp2) 上头的装置与设定为主。固然现在 (2006/12) 最新的 Thunderbird 曾经出到 1.5.x 了, 不外繁体中文版更新的速率好像无法跟的上,以是鸟哥底下以可以捉到的最新繁体中文版, 亦即 1.0.6 这个版原本作为引见啰。

                在你下载原始的装置文件后,间接双击下载的文件就会进入装置的画面了。 装置真是太复杂了!便是不断给他‘下一步’罢了,最初有个‘立刻实行 Thunderbird ’, 你可以选择他,然后就会呈现能否要汇入‘Outlook Express’或许是‘Outlook’等其他邮件署理人顺序曾经树立的帐号材料, 假如您从未树立过帐号材料,那么这个中央可以略过,假如你要将零碎下面曾经存在的 OE 材料给他转移到雷鸟上, 就选择汇入吧!不外鸟哥这里假定历来没有运用过 OE,以是选择不汇入任何材料。

                Thunderbird 的运用
                图五、Thunderbird 的运用

                Tips:
                现实上 Outlook Express 这个 Windows 预设的邮件收发软件在比拟少量的邮件收发进程当中, 偶而会呈现一些错误的题目,尤其是文件大于 2GB 以上以及经常删除一些无用的函件, 却遗忘停止 OE 所谓的‘紧缩’时,会形成挺严峻的错误,最严峻的状况下您一切的函件都能够会遗失。 运用上必须要特殊警惕一些操纵举动。您可以玩一玩雷鸟,比拟一下两者的差别喔!
                鸟哥的图示
                由于 Thunderbird 可以提供多种资讯的下载,以是我们必需要自行指定所需求的帐号材料才行。 如下图所示,我们指定的是 Email 的帐号喔!点选他,然后给他下一步吧!

                Thunderbird 的运用
                图六、Thunderbird 的运用

                起首要你填写的并不是实践的帐号材料,而是你想要‘收信者看到的属于你的资讯’罢了。 在‘台甫’的局部可填写你的昵称或实践台甫;在 Email 位址则请填写盼望对方‘复书时的 email ’。 实在这里便是邮件 Header 局部的‘ Mail from: "台甫"<email> ’啦! 你得要留意的是,假如 email 填写错误,收件者间接‘复书’时,将无法寄达准确的中央喔!

                Thunderbird 的运用
                图七、Thunderbird 的运用

                再来才是紧张的收、发函件的邮件主机地点处,你可以在收件效劳器及效劳器称号局部填写主机称号, 固然也可以间接填写 IP 的啦!普通在 LAN 内的 private IP 鸟哥都运用 IP 来填写罢了说! ^_^

                Thunderbird 的运用
                图八、Thunderbird 的运用

                你要用什么帐号来收信啊?这里真的不克不及写错了喔!

                Thunderbird 的运用
                图九、Thunderbird 的运用

                底下的帐号称号实在只是一个提示的名字罢了,以是你可以间接运用 email 来作为这个帐号的提示称号即可。

                Thunderbird 的运用
                图十、Thunderbird 的运用

                假如如下所示,统统都没有题目时,就按下谁人‘立刻下载邮件’而且按下‘完成’吧!

                Thunderbird 的运用
                图十一、Thunderbird 的运用

                终极后果终于呈现啦!便是底下的样子!右边是一些信匣,左边上方则是各个函件的标头, 左边下方则是实践的函件内容啊!

                Thunderbird 的运用
                图十二、Thunderbird 的运用

                更多的 Thunderbird 运用就请自行参考线上的阐明文件来玩玩吧! 不会很难啦!与常用 Outlook express 的冤家来说,你会以为他基本与 OE 便是如出一辙嘛! 操纵操纵也就熟习啰! ^_^


                大标题的图示邮件主机的进阶设定:
                Sendmail 经常被传成‘平安性很差的邮件效劳器!’固然, Sendmail 官方网站也很不满的回应说‘ 实在, Sendmail 的题目来自于一些"活该的"文件权限设定错误的情况! ’也便是说,实在 sendmail 经常会由于‘零碎办理员’设定文件或许目次不良的状况下,招致 Mail Server 发作题目啰!实在不止 sendmail ,绝大局部的网络效劳器都有这个题目啊! 以是,底下我们就来说一说与 Mail server 有关的平安性与其他相干的平安方面设定吧!


                小标题的图示一些设定档所需求留意的‘权限’题目
                这部份我们以 Sendmail 官方网站的发起来阐明喔!实在也实用于 postfix 的啦! 此中,大局部是在于‘目次与文件权限’的设定要求下面:
                • 请确定 /etc/aliases 这个文件的权限,仅能由零碎信托的帐号来修正,通常其权限为 644 ;
                • 请确定 Mail server 读取的材料库 (多数在 /etc/mail/ 或 /etc/postfix/ 底下的 *.db 文件),比方 mailertable, access, virtusertable 等等,仅能由零碎信托的运用者读取,其他一概不克不及读取,通常权限为 640 ;
                • 零碎的伫列目次 (/var/spool/mqueue 或 /var/spool/postfix) 仅容许零碎读取,通常权限为 700 ;
                • 请确定 ~/.forward 这个文件的权限也不克不及设定成为任何人均可查阅的权限,不然您的 e-mail 材料能够会被盗取~
                • 总之,普通用户可以不必 ~/.forward 与 aliases 的功用,就不要运用!
                不外全体的运用上照旧需求身为网站办理员的您多操心啊!


                小标题的图示复杂的告白信抵御机制: postgrey 的举措
                晚期的告白信许多都是藉由僵尸电脑 (曾经被看成跳板但办理员却没有发明或没有处置的主机) 来发送的, 这些僵尸电脑所发送的函件有个很分明的特征,便是‘他只会实验传送该封电子邮件一次, 不管有无乐成,该封信就算收回去了,故该函件将被移出伫列中。’ 不外,正当的 mail server 运作流程就如之前剖析的普通,在邮件无法顺遂寄出时该邮件会临时安排到伫列中一段工夫, 并不断实验将函件寄出的举措,预设直到五天后若照旧无法寄出才会将函件退回。

                依据这个正当与合法的邮件效劳器运作流程而开展出一套所谓的曙光 (postgrey) 软件, 您可以参考底下的几个阐明来处置这个软件:
                根本上 postgrey 次要的功用是在记载发信泉源罢了,若发信泉源统一封信第一次寄来时, postgrey 预设会抵御他,而且未来源位址记载起来,在约 5 分钟后,若该函件又传来一次时, 则该函件会被收上去。云云则可以根绝非发邮件效劳器单次发送的题目喔! ^_^! 但关于你确定正当的主机则可以开放所谓的‘白名单 (whitelist) ’来优先经过而不抵御。 以是说,他次要是如许停止的:(参考http://projects.puremagic.com/greylisting/whitepaper.html)
                1. 确认发信泉源能否在白名单中,如果则予以经过;
                2. 确认收信者能否在白名单中,如果则予以经过;
                3. 确定这封信能否曾经被记载起来呢?放行的根据是:
                  • 若无此函件的记载,则将发信位址记载起来,并将函件退回;
                  • 如有此函件的记载,但是记载的工夫尚未超越指定的工夫 (预设 5 分钟) ,则照旧退复书件;
                  • 如有函件的记载,且记载工夫已超越指定的工夫,则予以经过;
                整个进程复杂的来说便是如许罢了。不外为了要疾速的告竣 postgrey 的‘记载’才能,以是材料库零碎又是不行防止的工具。 且 postgrey 是由 perl 写成的,你能够也需求参加许多相依的 perl 模组才行。 总的来说,你需求的软件至多要有:
                • BerkeleyDB: 包罗 db4, db4-utils, db4-devel 等套件:
                • Perl: 运用 yum install perl 即可;
                • Perl 模组: perl-Net-DNS 是 CentOS 自身有提供的,其他没有提供的可以到 http://rpmfind.net/去搜索下载。
                除了可以运用 yum 来装置的套件之外,其他的套件鸟哥底下作了保持,你可以间接下载看看:
                将下载的这四个 RPM 给他运用 rpm -ivh *.rpm 就可以一口吻的装置上去了。然后你就可以实验启动 postgrey 看看啰:
                [root@linux ~]# /etc/init.d/postgrey start
                [root@linux ~]# netstat -anlp | grep grey
                unix  2 ...两头省略...    /var/spool/postfix/postgrey/socket
                
                由于 postfix 必须要保持到 postgrey 来停止一些名单确实认,但是两者保持的方法除了网络 IP 之外, 传统的 Unix socket 也是可以保持上的!由于传统 socket 不需求额定启动网络连线的端口, 鸟哥以为如许也比拟契合本机单独的操纵,以是我们运用这一版 postgrey 的预设 unix socket 来衔接啰。 接上去我们必须要修正 postfix 的 main.cf 了!请你如许做吧:
                [root@linux ~]# vi /etc/postfix/main.cf
                # 假如你已经设定过底下这个设定值,请找到他来修正!不然请自行添加底下的字样:
                smtpd_recipient_restrictions = 
                     permit_mynetworks
                     reject_unauth_destination
                     check_policy_service unix:/var/spool/postfix/postgrey/socket
                # 重点是最初面那一行!便是指定运用 unix socket 来衔接到 postgrey 之意。
                # 后续我们另有一些告白信的抵御机制,特殊发起您将这个 postgrey 的设定值写在最初,
                # 由于他可以算是我们最初一个查验的机制喔!
                
                [root@linux ~]# /etc/init.d/postfix restart
                [root@linux ~]# chkconfig postgrey on
                
                然后你可以本人从内部主机寄一封信给本人这部邮件效劳器看看,记得去登录档外调一查 (/var/log/maillog), 应该会呈现相似的字眼:

                Nov 27 15:17:09 linux postfix/smtpd[16132]: NOQUEUE: reject: RCPT from sun.linux.tsai[192.168.1.101]: 450 <dmtsai@linux.vbird.tsai>: Recipient address rejected: Greylisted, see http://isg.ee.ethz.ch/tools/postgrey/help/linux.vbird.tsai.html; from=<dmtsai@sun.vbird.tsai> to=<dmtsai@linux.vbird.tsai> proto=ESMTP helo=<sun.vbird.tsai>

                这表现 postgrey 曾经开端顺遂运作了!而且泉源主机的相干记载也曾经纪录在 /var/spool/postfix/postgrey/ 目次下啰!云云一来您的 postfix 将可以透过 postgrey 来挡失一些莫明其妙的告白信啰!

                不外 postgrey 也是有缺陷的,怎样说呢?由于 postgrey 预设会先将函件退归去, 以是你的函件就能够会发作耽误的题目,耽误的工夫能够是数分钟到数小时, 端看你的 MTA 设定而定。假如你想要让‘某些信托的邮件主机不需求颠末 postgrey 的抵御机制’时, 就得要开放白名单啰!

                白名单的开启也很复杂啊,间接编写 /etc/postfix/postgrey_whitelist_clients 这个文件即可。 假定你要让鸟哥的邮件主机可以自在的将信寄到你的 MTA 的话,那么你可以在这个文件内参加这一行:
                [root@linux ~]# vi /etc/postfix/postgrey_whitelist_clients
                mail.vbird.idv.tw
                sun.linux.tsai
                # 将主机称号写出来吧!
                
                [root@linux ~]# /etc/init.d/postgrey restart
                
                假如你另有更多信托的主机的话,将他写入这个文件当中!那他就可以略过 postgrey 的剖析啰! 更进阶的用法就得要靠您本人去开掘啰! ^_^


                小标题的图示关于黑名单的抵御机制
                还记得后面讲到的 Open Relay 的题目吧?你的主机可万万不克不及成为 Open Relay 的情况,不然对你的网络与‘信誉’影响很大喔!普通来说,只需是 Open Relay 的邮件主机都市被参加黑名单当中, 比方台湾地域的学术网络黑名单以及网际网络社会上提供的黑名单材料库:
                既然黑名单材料库外面的 mail server 自身便是有题目的邮件主机,那么当黑名单外面的主机想要跟我的 mail server 连线时,我固然可以‘公道的疑心该函件是有题目的!’您说是吧! 以是来自黑名单或许是要送至黑名单的函件最好是不要承受啦!

                您固然可以自行前去该网站将有题目的主机列表给他参加本人的邮件主机抵御机制当中, 不外便是不太兽性化!既然网际网络社会曾经提供了黑名单材料库了,我们就可以应用这个材料库来抵御嘛! 在决议能否停止 Relay 之前,先要求我们的 postfix 前去追踪黑名单的材料库, 若目的的 IP 或主机称号是黑名单的一员,则我们就将该函件回绝啰!

                Postfix 设定黑名单查验真的很复杂,你只需如许做即可:
                [root@linux ~]# vi /etc/postfix/main.cf
                smtpd_recipient_restrictions =
                     permit_mynetworks
                     reject_unauth_destination
                     reject_rbl_client cbl.abuseat.org
                     reject_rbl_client bl.spamcop.net
                     reject_rbl_client cblless.anti-spam.org.cn
                     reject_rbl_client sbl-xbl.spamhaus.org
                     check_policy_service unix:/var/spool/postfix/postgrey/socket
                
                [root@linux ~]# /etc/init.d/postfix restart
                
                上表当中的特别字体局部‘reject_rbl_client’是 postfix 内的一个设定项目, 前面可以接网际网络上提供的黑名单!您得要留意的是,这个黑名单材料库能够会继续的变化, 请您先以 dig 的方法反省每个材料库能否真的存在,假如存在才加以设定在您的主机上头啊! (由于网际网络上头许多文献所提供的黑名单材料库好像曾经不再继续效劳的样子!)

              35. 反省你的邮件效劳器能否在黑名单当中?
              36. 既然黑名单材料库所记载的是不受欢送的泉源与目的 MTA ,那么您的 MTA 固然最好不要在该材料库中嘛! 同时这些材料库通常也都有提供检测的功用,以是你也可以用该功用来反省你的主机能否‘记载有案’呢? 你可以如许处置的:
                1. 能否已在黑名单材料库中:
                  确认的办法很复杂,间接到‘http://cbl.abuseat.org/lookup.cgi ’输出您的主机称号或许是 IP ,就可以反省能否曾经在黑名单当中;

                2. 能否具有 Open Relay:
                  假如要测试你的主机有没有 Open Relay ,间接到‘http://140.111.1.22/tanet/spam.html ’这个网页, 在这个网页的最下方可以输出你的 IP 来反省,留意喔,不要运用他人的 email IP 呐! 此时该主时机收回一封 mail 的测试信看看你的 mail server 会不会自动的代转, 然后将后果报答给您。要留意的是,回传的网页能够有编码的题目,假如呈现乱码时,请调解为 big5 编码即可。

                3. 怎样移除:
                  假如被反省出,您的主机曾经在黑名单当中,那么请立即将 Open Relay 的功用封闭,改进你的 Mail Server 之后,你能够还要到各个次要的 Open Relay 网站停止移除的任务。假如是学术网络的话, 请与您单元的办理员联结。至于普通罕见的黑名单材料库则通常会自动的帮您移除,只不外需求一些工夫的测试便是了。
                总之您必需要确定你不在黑名单当中,且最好将黑名单的泉源给回绝失!搞定! ^_^


                小标题的图示开放 SMTP 身份认证之 relay 机制
                图一的流程当中,由 MUA 透过 MTA 来寄发函件时 (具有 Relay 的举措时) ,实际上 MTA 必须要开放用户端泉源才行,这便是为啥我们必须要在 main.cf 外头设定 smtpd_recipient_restrictions 谁人设定项目标缘由了!不外人总有不方便的时分,举例来说, 假如你运用的是拨接制的 ADSL 以是每次获得的 IP 都非牢固,那怎样运用你的 MTA ? 很费事,对吧!这个时分 SMTP 认证大概有点协助。

                关于 SMTP 认证的运用后面曾经略微提过了,重点在于 MUA 想要运用 MTA 来停止 relay 的时分,MTA 会要求 MUA 来输出认证用的帐号与暗码,以获得运用的权限便是了。 我们的 CentOS 曾经有提供内建的认证模组,那便是 Cyrus SASL 这个套件的帮助啦!

                Cyrus SASL (http://cyrusimap.web.cmu.edu/) 是 Cyrus Simple Authentication and Security Layer 的缩写,他是一个辅佐的套件。 在 SMTP 认证方面, Cyrus 次要提供了 saslauthd 这个效劳来停止帐号暗码的比对举措! 也便是说:当有任何人想要停止邮件转递功用时, Postfix 会联结 saslauthd 请其代为反省帐号暗码,若比对经过则容许用户端开端转寄函件。

                好了,假如你想要运用最复杂的方法来停止 SMTP 认证功用的话,在 CentOS 当中你应该要如许做:
                1. 装置 cyrus-sasl, cyrus-sasl-devel, cyrus-sasl-plain, cyrus-sasl-md5 等套件;
                2. 启动 saslauthd 这个效劳;
                3. 设定 main.cf 让 postfix 可以与 saslauthd 联络;
                4. 用户端必须要在寄信时设定‘邮件主机认证’功用。
                云云一来用户端才干够启动 SMTP AUTH 喔!关于软件装置方面,请运用 yum 间接装置吧! 不再多啰唆!底下我们由启动 saslauthd 这个效劳开端吧!


              37. 启动 saslauthd 效劳
              38. saslauthd 是 Cyrus-SASL 提供的一个帐号暗码比对办理机制,固然他只能应用复杂的 PLAIN 机制停止暗码验证, 不外在设定上较为复杂。 saslauthd 可以保持许多帐号暗码办理机制,包罗 LDAP, PAM, SASLDB2 以及 SQL 材料库零碎等等。假如我们想要间接运用 Linux 零碎下面的运用者资讯, 也便是 /etc/passwd, /etc/shadow 所纪录的帐号暗码相干资讯时,可以运用‘ shadow ’这个机制, 固然也能运用‘ pam ’啦!更多的 saslauthd 连线至主机的机制请‘ man saslauthd ’来查阅吧。

                saslauthd 的启动真是好复杂,起首你必须要选择暗码办理机制,这个可以运用底下的方法处置:
                1. 先理解你的 saslauthd 有援助哪些暗码办理机制:
                [root@linux ~]# saslauthd -v
                saslauthd 2.1.19
                authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
                # 上列的特别字体局部便是有援助的!我们要用 Linux 本机的运用者资讯,
                # 以是用 shadow  即可。
                
                2. 设定实践运用的机制
                [root@linux ~]# vi /etc/sysconfig/saslauthd
                MECH=shadow
                # 这也是预设值,有的冤家喜好 pam 机制,也可以啦!
                
                3. 那就启动吧!
                [root@linux ~]# /etc/init.d/saslauthd start
                [root@linux ~]# chkconfig saslauthd on
                
                之后我们必须要见告 Cyrus 这个咚咚运用的效劳为 saslauthd 才行,设定的办法很复杂:
                [root@linux ~]# vi /usr/lib/sasl2/smtpd.conf
                log_level: 3                <==登录档资讯品级的设定,设定 3 即可
                pwcheck_method: saslauthd   <==便是选择什么效劳来担任暗码的比对啊
                mech_list: PLAIN LOGIN      <==那么援助的机制有哪些之意!
                
                由于 saslauthd 预设就仅援助密码传输罢了,我们可以运用 mech_list 列出特定援助的机制。 并且 saslauthd 是个很复杂的帐号暗码办理效劳,你简直不需求停止什么额定的设定, 间接启动他就失效了!真是好方便! ^_^


              39. main.cf 的设定项目:
              40. 那我们的 postfix 该怎样处置呢?实在设定真的很复杂,只需如许做就好了:
                [root@linux ~]# vi /etc/postfix/main.cf
                # 在本文件最初面添加这些设定材料:
                smtpd_sasl_auth_enable = yes
                smtpd_sasl_security_options = noanonymous
                broken_sasl_auth_clients = yes
                # 然后找到跟 relay 有关的设定项目,添加一段容许 SMTP 认证的字样:
                smtpd_recipient_restrictions =
                     permit_mynetworks
                     permit_sasl_authenticated
                     reject_unauth_destination
                     reject_rbl_client cbl.abuseat.org
                     reject_rbl_client bl.spamcop.net
                     reject_rbl_client cblless.anti-spam.org.cn
                     reject_rbl_client sbl-xbl.spamhaus.org
                     check_policy_service unix:/var/spool/postfix/postgrey/socket
                
                [root@linux ~]# /etc/init.d/postfix restart
                
                各个项目标意义是如许的:
                • smtpd_sasl_auth_enable
                  便是设定能否要启动 sasl 认证的意思,假如设定启动后 postfix 会自动去载入 cyrus sasl 的函式库, 而该函式库会根据 /usr/lib/sasl2/smtpd.conf 的设定来保持到准确的办理帐号与暗码的效劳, 那便是我们的 saslauthd 啰!

                • smtpd_sasl_security_options
                  这个项目指的是‘要取消哪些登入的方法’的意思。我们可以取消匿名登入的能够性, 以是设定为 noanonymous 即可。由于 saslauthd 运用的是 plaintext ,以是你可不克不及设定 noplaintext 喔! 注意注意!

                • broken_sasl_auth_clients
                  这个是针对晚期非正轨 MUA 的设定项目,由于晚期软件开辟商在开辟 MUA 时没有参考通讯协议规范, 以是形成在 SMTP 认证时能够会发作的一些困扰。这些有题目的 MUA 比方 MS 的 outlook express 第四版便是如许! 厥后的版本应该没有这个题目。以是这个设定值你也可以不要设定!

                • smtpd_recipient_restrictions
                  最紧张的便是这里啦!我们的 sasl 认证可以放在第二行,在地区网络这个可信托地区的前面加以认证。 上表的设定意义是:地区网络内的 MUA 不需求认证也可以停止 relay ,而非区网内的其他泉源才需求停止 SMTP 认证之意。
                设定终了也重新启动 postfix 之后,我们先来测试看看能否真的提招认证了?
                [root@linux ~]# telnet localhost 25
                Trying 127.0.0.1...
                Connected to localhost.
                Escape character is '^]'.
                220 vbird.vbird.idv.tw ESMTP Postfix
                ehlo localhost
                250-linux.vbird.tsai
                250-PIPELINING
                250-SIZE 10240000
                250-VRFY
                250-ETRN
                250-AUTH LOGIN PLAIN     <==你必须要看究竟下这两行才算数啊!
                250-AUTH=LOGIN PLAIN
                250 8BITMIME
                quit
                221 Bye
                


              41. 用户真个设定
              42. 用户端也需求设定向 MTA 主机发送 SMTP 认证的功用才行!作法很复杂啦,我们照旧以 Thunderbird 来作为引见,请翻开 thunderbird ,选择‘东西’-->‘帐号设定’后会呈现如下画面:

                用户端认证机制所需求启动的项目
                图十三、用户端认证机制所需求启动的项目

                记得在上图 2 所指的中央,将运用者帐号及暗码项目勾选,而且不运用平安连线 (由于 saslauthd 仅援助密码认证罢了) ,如许就 OK 啦!然后你实验寄出一封信看看,瞧瞧能否有顺遂的经过认证啊? 记得此用户端不要在地区网络内,不然将不会颠末认证的阶段,由于我们的设定以信托网络为优先嘛!
                假如统统都顺遂的话,那么当用户端以 SMTP 来验证时,你的登录档应该会呈现相似底下的讯息才是:
                [root@linux ~]# tail -n 100 /var/log/maillog | grep PLAIN
                Nov 28 15:27:21 linux postfix/smtpd[23060]: EFCC9A26CB: client=unknown
                [192.168.100.25], sasl_method=PLAIN, sasl_username=dmtsai
                


                小标题的图示根底的邮件过滤机制
                在整封信的传送流程当中,用户端若经过主机的重重限定后,终极应该可以抵达邮件伫列当中。 而由伫列当中要送出去或许是间接送到 mailbox 就得要透过 MDA 的处置。MDA 可以加挂许多机制呢! 尤其是他可以过滤某些特别字眼的告白函件或病毒函件呢! MDA 可以透过火析整封函件的内容 (包罗标头以及内文) 来撷取有题目的要害字,然后决议这封信的‘运气’说!

                我们的 postfix 曾经有内建可以剖析标头或许是内文的过滤机制了,那便是 /etc/postfix/ 目次下的 header_checks 以及 body_checks 这两个文件啊!在预设的状况下这两个文件不会被 postfix 运用, 你必须要用底下的设定来启用他:
                [root@linux ~]# vi /etc/postfix/main.cf
                header_checks = regexp:/etc/postfix/header_checks
                body_checks = regexp:/etc/postfix/body_checks
                # 谁人 regexp 代表的是‘运用正轨表现法’的意思啦!
                
                [root@linux ~]# touch /etc/postfix/header_checks
                [root@linux ~]# touch /etc/postfix/body_checks
                [root@linux ~]# /etc/init.d/postfix restart
                
                接上去你必须要自行处置 header_checks 以及 body_checks 的规矩设定,在设定前请您确认‘ 你关于正轨表现法是熟习的 ’才行!由于许多资讯都必须要透过正轨表现法来处置啦!然后开端设定的根据是:
                • 只需是 # 代表该举动表明,零碎或间接略过;
                • 在预设的规矩当中,巨细写是视为相反的;
                • 规矩的设定办法为:
                    /规矩/   举措   表现在登录档外面的讯息
                  请留意,要运用两个斜线‘ / ’将规矩包起来喔!举个例子来阐明:比方我想要 (1)抵御失标题为 A funny game 的函件,(2)而且在登录档外面表现 drop header deny,则可以在 header_chekcs 文件中可以如许写:
                    /^Subject:.*A funny game/   DISCARD  drop header deny
                • 关于举措有底下几个举措:
                  • REJECT :将该封函件退回给原发信者;
                  • WARN :将函件收上去,但是将该封信的根本材料记载在登录档内;
                  • DISCARD:将该封函件抛弃,并不赐与原发信者回应!
                鸟哥本人有作一些规矩的比对,只不外.....效能欠好!假如您有兴味的话,可以自行下载来看看, 不外,运用的结果请自行评价!由于每团体的情况都纷歧样嘛!
                记得,假如你自行修正过这两个文件后,务须要反省一下语法才行!
                [root@linux ~]# postmap -q - regexp:/etc/postfix/body_checks \
                >  < /etc/postfix/body_checks
                
                假如没有呈现任何错误,那就表现您的设定值应该没有题目啦!


              43. PROCMAIL
              44. 除了这两个设定之外,另有没有根底过滤分面的 MDA 机制呢?有的!那便是 procmail 啰~ Procmail 根本上就与上头提到的 body_checks 相仿,异样是用来剖析邮件之用的, 以是你也需求设定例则啊!起首你得要装置 procmail ,我们的 CentOS 曾经有内建的套件了, 请运用 yum install procmail 自行装置好他。

                那么 procmail 的过滤规矩在那边呢?预设便是 /etc/procmailrc 啰!这个文件的设定方法是如许的:
                1. 一组规矩设定至多共含有三行,如下所示:
                :0b                         <==设定过滤机制所要反省的函件局部
                * ^Subject:.*A funny game   <==便是反省的规矩局部
                /dev/null                   <==假如契合上述规则,则停止的举措
                
                参数阐明:
                a. 关于反省邮件的局部(第一行),flags 包括有:
                  H : Header 的反省
                  B : Body 的反省
                  h : 提供 Header 的材料,进入 pipe 、 file 及 mail 等的反省
                  b : 提供 Body 的材料进入 pipe, file 及 mail 等的反省!
                b. 关于反省内容的局部:
                  ! : 这是反向选择的意思
                  < : 反省 mail 的总长度能否小于设定值 ( bytes )
                  > : 与 < 相反的选择啰!
                c. 关于举措的局部
                  | : 开端启用后续的 shell 顺序任务!
                d. 其他的情况变数局部:
                  PATH    搜索实行档的途径
                  SENDMAIL  谁人 /usr/sbin/sendmail 啰!
                  LOGFILE   登录档!通常设定在 /var/log/procmail.log
                e. 与 Regular express 相干的局部:
                  ^ : 开端(统一行最右边)字元
                  $ : 本行的完毕字元(最左边)的比对
                  . : 除了新增一行之外的任何字元!
                  \ : 跳脱字元
                更细致的内容请务必参考:
                man procmailrc
                man procmailex
                
                网络上曾经有许多长辈提供了他们自行剖析的规矩,比方说卧龙巨匠:
                您可以经上述的网页材料捉到你的 /etc/procmailrc 当中,然后在 main.cf 外头添加这一句:
                [root@linux ~]# vi /etc/postfix/main.cf
                mailbox_command = /usr/bin/procmail
                
                [root@linux ~]# /etc/init.d/postfix restart
                

                透过这种根底的邮件剖析可以捉取一些有题目的邮件,不外关于现在渣滓邮件的抵御方面照旧很无限! 别的,由于这些剖析机制都间接读取函件来处置与剖析,这些机制通常都很耗零碎资源! 假如你的函件越大流量越大,那么你的零碎破费在‘剖析邮件’下面的工夫会花去许多资源, 以是你的硬体得要很好,不然当有大型邮件出去时,邮件主时机跑得喘嘘嘘! 以是现在要不要启动这些过滤机制.....见仁见智啰!


                小标题的图示非牢固 IP 也可以有春天: relayhost
                我们下面提到,假如你要搭建一台正当的 MTA 最好照旧得要请求牢固的 IP 以及准确对应的反解比拟适当。 但假如你肯定要用浮动 IP 来搭建你的 MTA 的话,也不是不行以啦,只不外你就得要透过下层 ISP 所提供的 relay 权限啰!这是怎样回事啊?让我们来看看一个实践的案例:

                应用 ISP 的 MTA 停止邮件转递
                图十四、应用 ISP 的 MTA 停止邮件转递

                实际上,由于我们是向 ISP 请求 IP 的,以是我们的 IP 关于 ISP 的 MTA 来说,应该都契合 relay 的要件。 那假如我应用这个 IP 来搭建一个 mail server ,而且让这个 mail server 的主机称号对应为 DDNS 的状况,则我的 IP 与主机称号对应得宜,以是固然可以搭建种种网站效劳器。假如没有设定以 ISP 的 MTA 作为 relay 的状况下,目的 MTA 会反剖析我们的 IP ,若失掉此 IP 为非正当的主机称号时, 该函件准绳上是会被退件的。

                那假如我以 ISP 的 MTA 来作为 relay 主机时,由于我们地点的 IP 原本就可以运用 ISP MTA 的 relay 功用, 以是图十四的第一步是没题目的。然后当 ISP 的 MTA 在停止 Relay 而将函件寄出去时, 目的 MTA 所看到的泉源端是‘ISP 的 IP’而不是我们本来的发信源! 云云一来固然我们的 MTA 就可以搭建起来啰!

                不外想要以此架构来搭建你的 MTA 仍有很多需求留意的中央:
                • 你照旧得要有一个正当的主机称号,若要省钱,可以运用 DDNS 来处置;
                • 你下层的 ISP 所提供的 MTA 必须要有提供你地点 IP 的 relay 权限;
                • 你不克不及运用自订的外部 DNS 架构了,由于一切 relay 的信都市被送至 ISP 的 MTA
                尤其是最初一点,由于一切外送的函件全部都市被送到 ISP 处,以是像我们之前本人玩的 vbird.tsai 这种非正当的范畴材料就没用了!为什么呢?你想想看,假如你要将函件送给 mail.vbird.tsai , 但由于上述的功用,以是这封信会被传到 ISP 的 MTA 来处置,但 ISP 的 MTA 会不会看法你的 vbird.tsai ?如许说,可以了解了吧?

                说是挺难的,做起来却很复杂,只需在 main.cf 外面加设一段材料即可。 假定你的情况是台湾地域的 hinet 所提供的用户,而 hinet 提供的邮件主机为 ms1.hinet.net , 则你可以间接如许设定:
                [root@linux ~]# vi /etc/postfix/main.cf
                # 参加底下这一行就对啦!留意谁人中括号!
                relayhost = [ms1.hinet.net]
                
                [root@linux ~]# /etc/init.d/postfix restart
                
                之后你只需实验寄一封信出去看看,就会理解这封信是怎样寄送的了。看一下登录档的内容会像如许:
                [root@linux ~]# tail -n 20 /var/log/maillog
                Nov 28 18:42:30 linux postfix/smtp[23673]: 515E8A26CE: to=<someone@正当的主机>, 
                relay=ms1.hinet.net[168.95.4.10], delay=1, status=sent (250 SAA09090 Message 
                accepted for delivery)
                
                是吧!经过下层 ISP 来转寄啦!云云一来,你的 MTA 觉得上就好像是部正当的 MTA 啰! 不外,可别应用这个权限来滥发告白信啊!由于您所透过的谁人 ISP 邮件主机但是有记载你的 IP 泉源, 假如你瞎搅的话,结果但是不可思议喔!牢记牢记!


                小标题的图示邮件扫瞄器: amavisd-new+f-port+spamassanssin
                现实上,到现在为止之前的设定应该可以满意普通 50 人以下的小企业情况了, 乃至再多一点人也没有题目的。不外假如人数多了,种种奇异的函件也会随着多起来, 这是由于总是会有人不警惕将他的 email address 放在网际网络上,假如被邮件位址搜索呆板人捉到的话, 你的 email 将会呈现在告白信发送商的名单中....

                为了防止这个题目,许多冤家是将他的信箱分为两个,一个间接放在 Internet 上,另一个则作为本人一样平常业务之用。别的有的冤家则运用相似底下所提供的邮件位址表现方法:
                  dmtsai{at}linux{dot}vbird{dot}tsai
                这种款式关于网络呆板人 (便是一种可以主动上彀搜索要害字的软件顺序啰!) 的搜索会形成困扰, 由于那些呆板人顺序用以判别能否为邮件位址是根据‘ @ ’来鉴别的啊! 以是说,不要走漏你团体的 email 是很紧张的一件事啊!
                Tips:
                你可以本人测试看看,假如请求了一个收费信箱,但不要将他发布,谁人信箱一定不会收就任何告白信。 但你一旦用谁人信箱来请求一些团体材料而发布在 Internet 下面时,呼呼!不超越一个星期, 该信箱一定会收到许多告白信!运用上要特殊注意喔!
                鸟哥的图示
                既然告白信在短期内不行能有个长足的处理方案,那至多我们可以间接在 mail server 端就将告白信与病毒信给他捉出来吧?云云就可以防止失运用者必须要本人剖析告白信与渣滓信等所破费的工夫了。 底下提供几个好工具来帮助处置主机真个函件材料喔:
                • amavisd-new:
                  官方网站:http://www.ijs.si/software/amavisd/
                  阐明:这个软件次要是介于 MTA 与邮件剖析软件之间的一个介面,他可以将位于伫列的邮件捉出来给剖析软件剖析, 通常是需求装置的,尤其他可以援助 postfix 呐!

                • f-port:
                  官方网站:http://www.f-prot.com/
                  阐明:是一种防毒软件,具有主动更新病毒码的才能;

                • SpamAssassin:
                  官方网站:http://spamassassin.apache.org/index.html
                  阐明:具有主动学习的告白信剖析软件,不外假如主动学习的规则太严厉,偶然会发作误判。
                接上去就让我们的 postfix 援助这三个工具吧!不外你得要留意的是, f-port 与 SapmAssisin 是独立运作的软件, 那 postfix 为了要运用这两个软件的剖析功用,就得要透过 amavisd-new 这个介面东西来传送函件资讯啰! 细致的作法请参考上头提供的官方网站,或许是参考讨论区的几篇文章也不错:
                固然网络上另有许多好文章,各人可以多多搜索一番。


              45. amavisd-new 的装置与设定:
              46. 固然你可以自利用用 tarball 来装置,不外我们也可以在 http://rpmfind.net/ 找到给 RHEL 4 运用的版本。既然 CentOS 与 RHEL 运用的套件均相反, 没有原理我们不克不及装置!是吧!^_^。以是底下的套件请先由 http://rpmfind.net/ 网站捉上去吧!然后再开端装置去。 要留意的是,由于 amavisd-new 用 perl 写成的,他需求许多 perl 的模组,且由于要剖析函件内容, 以是也需求许多解紧缩软件来剖析函件内的紧缩档,因而才会需求这么多的软件装置~ @_@:

                与 Perl 模组有关的套件:
              47. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Archive-Tar-1.30-1.el4.rf.noarch.rpm
              48. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Archive-Zip-1.16-1.2.el4.rf.noarch.rpm
              49. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-BerkeleyDB-0.31-1.el4.rf.i386.rpm
              50. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Compress-Zlib-1.42-1.el4.rf.i386.rpm
              51. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Convert-BinHex-1.119-2.2.el4.rf.noarch.rpm
              52. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Convert-UUlib-1.051-1.2.el4.rf.i386.rpm
              53. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Convert-TNEF-0.17-3.2.el4.rf.noarch.rpm
              54. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-IO-Multiplex-1.08-3.el4.rf.noarch.rpm
              55. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-IO-stringy-2.110-1.2.el4.rf.noarch.rpm
              56. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-MIME-tools-5.420-1.el4.rf.noarch.rpm
              57. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Net-Server-0.94-1.el4.rf.noarch.rpm
              58. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/perl-Unix-Syslog-0.100-1.2.el4.rf.i386.rpm
              59. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/amavisd-new-2.4.3-1.el4.rf.i386.rpm

                与紧缩及解紧缩软件有关的套件:
              60. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/arc-5.21j-0.2.el4.rf.i386.rpm
              61. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/cabextract-1.2-1.el4.rf.i386.rpm
              62. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/freeze-2.5-2.2.el4.rf.i386.rpm
              63. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/lzo-1.08-4.2.el4.rf.i386.rpm
              64. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/lzop-1.01-1.2.el4.rf.i386.rpm
              65. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/nomarch-1.4-1.el4.rf.i386.rpm
              66. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/ripole-0.2.0-1.2.el4.rf.i386.rpm
              67. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/unarj-2.63-0.a.2.el4.rf.i386.rpm
              68. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/unrar-3.6.8-1.el4.rf.i386.rpm
              69. ftp://rpmfind.net/linux/dag/redhat/el4/en/i386/dag/RPMS/zoo-2.10-2.2.el4.rf.i386.rpm
                您能够先要以 yum 的方法来装置 ncompress, perl-Net-DNS, perl-TimeDate, perl-MailTools, perl-Digest-SHA1, perl-Digest-HMAC, perl-Time-HiRes, spamassassin 这几套软件,然后将上列的软件全部放在统一个目次下,以 rpm -Uvh *.rpm 来装置上述的一切套件!但装置时假如呈现如下画面:
                warning: amavisd-new-2.4.3-1.el4.rf.i386.rpm: V3 DSA signature: NOKEY, key ID 6b
                Preparing...                ########################################### [100%]
                        package perl-BerkeleyDB-0.31-1.el4.rf is already installed
                	....
                
                这表现某些套件曾经被装置了!你不该该还装置他!那么请自即将这些已装置的套件文件移出现在目次, 再实行一次 rpm -Uvh *.rpm 就可以装置啰!假如照旧呈现某些相依属性的题目,要嘛就以 yum 来装置, 要嘛就以 http://rpmfind.net 网站搜索得当的 RPM 文件来装置, 装置终了后就预备来设定一下啰!

                要开端设定 amavisd-new 之前,请务必先查阅一下 /usr/share/doc/amavisd-new-2.4.3/README.postfix 这个文件的内容, 外面有很细致的设定阐明喔!然后这个 amavisd-new 的设定档只要 /etc/amavisd.conf 罢了, 预设的状况下该文件内容含有许多的病毒搜索引擎,不外我们仅有 f-port 这个扫毒软件罢了, 以是外面需求停止许多修正喔!根本内容的修正如下:
                [root@linux ~]# vi /etc/amavisd.conf
                # 起首是关于零碎设定的局部,包罗主机与范畴称号等的设定:
                $mydomain = 'vbird.tsai';          <==约在第 20 行,填写你的范畴名;
                $MYHOME = '/var/amavis';           <==约在第 22 行,这是 amavis 的预设家目次之意
                $inet_socket_port = 10024;         <==约在第 51 行,预设启动的 port 啦!
                $myhostname = 'linux.vbird.tsai';  <==约在第113 行,改成你的主机称号
                $notify_method  = 'smtp:[127.0.0.1]:10025';  <==约在第116 行,设定衔接的端口
                $forward_method = 'smtp:[127.0.0.1]:10025';  <==约在第117 行,同上
                
                # 2. 底下这几行约在第 118 行之后,用来作为找到病毒或告白信后的举措!
                # 假如你惧怕不警惕将紧张文件删除了,发起你先改成 D_BOUNCE 事后处置
                $final_virus_destiny      = D_BOUNCE;  <==找到病毒时的举措
                $final_banned_destiny     = D_BOUNCE;  <==找到制止项目标举措
                $final_spam_destiny       = D_PASS;    <==找到告白信的举措
                $final_bad_header_destiny = D_PASS;    <==找到不良函件标头的举措
                # 可以处置的举措次要有:
                #   D_PASS    无论邮件的内容能否有题目,该邮件都市传给收件者
                #   D_DISCARD 邮件被抛弃,并且不会见告收件者与寄件者;
                #   D_BOUNCE  邮件不会传给收件者,但无法通报的讯息会见告寄件者;
                #   D_REJECT  邮件不会传给收件者,但寄件者会收到回绝的讯息。
                # 鸟哥在这里由于担忧误删一些材料,以是除了病毒与制止项目会回传错误给寄件者外,
                # 其他两个先预设可以经过。比及将来邮件效劳器运用者以为可以承受后,
                # 某些局部 (如病毒) 就可以改为 D_DISCARD 来间接抛弃了!
                
                # 3. 再来则是决议病毒扫瞄的引擎,底下辨别是次要与主要扫毒顺序
                @av_scanners = (                <==约莫在 309 行,外面的项目全部表明;
                ....两头省略....
                );
                # 由于一切的病毒扫瞄引擎都没有装置嘛!
                
                @av_scanners_backup = (         <==约莫在 626 行,只需剩下底下这些
                  ['FRISK F-Prot Antivirus', ['f-prot','f-prot.sh'],
                    '-dumb -archive -packed {}', [0,8], [3,6],
                    qr/Infection: (.+)|\s+contains\s+(.+)$/ ],
                ....两头省略....
                );
                
                amavisd-new 大抵上就处理到这里,如今还无法启动他,由于我们要先装置 f-port 才行呐! 赶忙下一举措吧!


              70. 装置与设定 f-port :
              71. f-port 是一个扫毒软件,他的版本十分的多,此中只要一个是收费的团体版本, 请究竟下的保持去下载,不要下载错文件了喔!
                发起你间接下载 RPM 文件,然后间接装置他就好了!装置后 f-port 会立刻自动停止线上更新, 以是请你在装置的时分确定你的网络是正常的。而一切 f-port 的材料都市被安排到 /usr/local/f-prot/ 目次下。 该目次下的 README 以及相干保持可以瞧一瞧。装置终了后反省看看可否任务:
                [root@linux ~]# f-prot -verno
                F-PROT ANTIVIRUS
                Program version: 4.6.6
                Engine version: 3.16.14
                
                VIRUS SIGNATURE FILES
                SIGN.DEF created 29 November 2006
                SIGN2.DEF created 29 November 2006
                MACRO.DEF created 27 November 2006
                # 若呈现如上的版本宣告,这表现 f-prot (留意档名) 可以顺遂运作。
                
                [root@linux ~]# f-prot /etc/crontab
                # 假如有呈现扫瞄的字样,就表现这个软件可以开端停止扫瞄的任务啦!
                
                实在这也便是说, f-port 这套软件的扫瞄顺序‘ f-prot ’可以在 Linux 下面扫瞄种种文件的意思! 不外,我们的重点是应用他来停止邮件扫瞄便是了。至于线上更新病毒码局部,你可以手动线上更新, 也可以进入任务排程来主动更新喔:
                1. 手动即时线上更新方法:
                [root@linux ~]# /usr/local/f-prot/tools/check-updates.pl
                
                2. 主动更新排程:
                [root@linux ~]# vi /etc/crontab
                27 4,16 * * * root /usr/local/f-prot/tools/check-updates.pl -cron -quiet
                
                云云一来我们的 f-port 每天可以停止两次线上更新的举措呢!很不错吧!


              72. 测试 amavisd-new 与病毒扫瞄顺序的搭配:
              73. 完成上述的设定后,我们可以先来测试看看 amavisd-new 与 f-port 扫毒顺序的搭配状况。 你可以间接如许做:
                [root@linux ~]# amavisd debug
                ....后面省略....
                # 底下在阐明此软件所监听的介面与 port 另有实行者的 UID/GID 等
                Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Binding to TCP port 10024 on 
                host 127.0.0.1
                Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Setting gid to "102 102"
                Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Setting uid to "101"
                Nov 30 14:51:53 linux amavisd[3457]: Net::Server: Setting up serialization via 
                flock
                
                # 底下在阐明各个模组能否有被顺遂的载入
                Nov 30 14:51:54 linux amavisd[3457]: Module Amavis::Conf   2.072
                Nov 30 14:51:54 linux amavisd[3457]: Module Archive::Tar   1.30
                Nov 30 14:51:54 linux amavisd[3457]: Module Archive::Zip   1.16
                ....两头省略....
                
                # 底下则是在阐明载入哪些材料
                Nov 30 14:51:54 linux amavisd[3457]: Amavis::DB code      loaded
                Nov 30 14:51:54 linux amavisd[3457]: Amavis::Cache code   loaded
                ....两头省略....
                Nov 30 14:51:54 linux amavisd[3457]: ANTI-VIRUS code      loaded
                Nov 30 14:51:54 linux amavisd[3457]: ANTI-SPAM code       loaded
                Nov 30 14:51:54 linux amavisd[3457]: ANTI-SPAM-SA code    loaded
                Nov 30 14:51:54 linux amavisd[3457]: Unpackers code       loaded
                
                # 这里阐明的是一些文件解紧缩的功用啰!
                Nov 30 14:51:54 linux amavisd[3457]: Found $file   at /usr/bin/file
                Nov 30 14:51:54 linux amavisd[3457]: No $dspam,    not using it
                Nov 30 14:51:54 linux amavisd[3457]: Internal decoder for .mail
                Nov 30 14:51:54 linux amavisd[3457]: Internal decoder for .asc
                ....两头省略....
                Nov 30 14:51:54 linux amavisd[3457]: Found secondary av scanner FRISK 
                F-Prot Antivirus at /usr/local/bin/f-prot <==这行紧张!阐明有找到 f-port
                Nov 30 14:51:54 linux amavisd[3457]: SpamControl: initializing Mail::SpamAssassin
                Nov 30 14:51:56 linux amavisd[3457]: SpamControl: init_pre_fork done
                ....前面省略....
                # 最初按下 [ctrl]-c 来完毕这个 debug 的画面喔!
                
                看起来应该是没有题目啦!然后赶忙给他启动这个效劳吧!
                [root@linux ~]# /etc/init.d/amavisd start
                
                # 测试一下 amavisd 启动的 port 10024 能否顺遂运作中?
                [root@linux ~]# telnet 127.0.0.1 10024
                Trying 127.0.0.1...
                Connected to 127.0.0.1.
                Escape character is '^]'.
                220 [127.0.0.1] ESMTP amavisd-new service ready
                ehlo localhost
                250-[127.0.0.1]
                250-VRFY
                250-PIPELINING
                250-SIZE
                250-ENHANCEDSTATUSCODES
                250-8BITMIME
                250-DSN
                250 XFORWARD NAME ADDR PROTO HELO
                quit
                221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
                Connection closed by foreign host.
                
                假如统统都顺遂的话,你可以将这个效劳给他写入开机主动实行中!‘ chkconfig amavisd on ’ 如许就好啦!预备设定一下让 postfix 来援助 amavisd-new 的伫列剖析任务吧!


              74. 设定 Postfix 使援助 amavisd-new 的剖析任务:
              75. 这个设定项目需求的资讯比拟多,有两个文件要修正,先改 master.cf 吧!
                [root@linux ~]# vi /etc/postfix/master.cf
                # 这几行专门为了病毒、告白信作的保持!
                # ====================================================================
                # service type  private unpriv  chroot  wakeup  maxproc command + args
                #               (yes)   (yes)   (yes)   (never) (100)
                # ====================================================================
                smtp-amavis unix -      -       n        -       2    smtp
                    -o smtp_data_done_timeout=1200
                    -o smtp_send_xforward_command=yes
                    -o disable_dns_lookups=yes
                    -o max_use=20
                
                127.0.0.1:10025 inet n  -       n        -       -    smtpd
                    -o content_filter=
                    -o smtpd_restriction_classes=
                    -o smtpd_delay_reject=no
                    -o smtpd_client_restrictions=permit_mynetworks,reject
                    -o smtpd_helo_restrictions=
                    -o smtpd_sender_restrictions=
                    -o smtpd_recipient_restrictions=permit_mynetworks,reject
                    -o smtpd_data_restrictions=reject_unauth_pipelining
                    -o smtpd_end_of_data_restrictions=
                    -o mynetworks=127.0.0.0/8
                    -o smtpd_error_sleep_time=0
                    -o smtpd_soft_error_limit=1001
                    -o smtpd_hard_error_limit=1000
                    -o smtpd_client_connection_count_limit=0
                    -o smtpd_client_connection_rate_limit=0
                    -o smtpd_milters=
                    -o local_header_rewrite_clients=
                    -o local_recipient_maps=
                    -o relay_recipient_maps=
                
                这几行给他设定好,然后再来处置 main.cf 这个文件啰!
                [root@linux ~]# vi /etc/postfix/main.cf
                content_filter = smtp-amavis:[127.0.0.1]:10024
                
                [root@linux ~]# /etc/init.d/postfix restart
                
                嘿嘿!然后开端就可以帮你剖析病毒信啦!便是这么复杂呐!


              76. 告白信的抵御:
              77. 我们有运用 spamassassin 这个主动学习抵御告白信的机制,这个玩意儿次要是透过火析函件内容, 只需函件内容的某一台份契合 spamassassin (简称 SA) 的标准,则该函件可赐与一个分数。 将该函件的一切分数总和起来,若分数高于我们所规则的预设分数,则该函件可以被视为告白信。 这个分数假如设定太低,则许多正当的函件都市不警惕被视为告白信,假如设定太高,能够又会捉不到告白信。 真是两难。这个分数的设定值预设是在:
                [root@linux ~]# vi /etc/amavisd.conf
                $sa_tag_level_deflt  = 5.0;    <==约莫在第 61 行,将 2 改成 5 吧!
                
                [root@linux ~]# vi /etc/mail/spamassassin/local.cf
                required_hits 5                <==便是他!便是这个分数啦!
                report_safe 0
                rewrite_header Subject [SPAM]  <==假如是告白信,标头会被改写!
                
                [root@linux ~]# /etc/init.d/amavisd restart
                
                每团体的主机都不太一样,以是这个分数需求你多方的实验才干找出最佳的数值。 便是由于惧怕误判,以是才盼望你在 /etc/amavisd.conf 外面不要将 spam 的规矩设定为 D_DISCARD 的啦! ^_^! 至于这个文件的处置方法,实在你可以参考底下的网页来改写 local.cf 文件喔!
                不外你得要留意的是, local.cf 外面许多的设定值曾经被 /etc/amavisd.conf 所代替了, 以是你的 local.cf 局部设定能够会生效的!这要特殊先阐明的。 整个病毒、告白信的装置与设定就到此为止啦,然后我们可以开端略微测试一下啰! 你可以应用 CentOS 自身的 Spamassassin 提供的一封告白信来测试看看:
                [root@linux ~]# mail -s 'spam test' dmtsai <  \
                > /usr/share/doc/spamassassin-3.0.6/sample-spam.txt
                # 假定你的零碎有个运用者名为 dmtsai ,你寄出告白信给他,
                # 然后用 dmtsai 收信一下,你会发明到该封函件的内容:
                
                [dmtsai@linux ~]$ mail
                >N 1 dmtsai@linux  Thu Nov 30 23:18  54/2065  "**SPAM** spam test"
                # 瞧!标头多出了一些工具啦!没错!函件标头会被改写!
                & 1
                From dmtsai@linux.vbird.tsai  Thu Nov 30 23:18:24 2006
                X-Original-To: dmtsai@linux.vbird.tsai
                Delivered-To: dmtsai@linux.vbird.tsai
                X-Quarantine-ID: <v02TdcMd+Vk4>
                From dmtsai@linux.vbird.tsai Thu Nov 30 23:18:24 2006
                X-Original-To: dmtsai@linux.vbird.tsai
                Delivered-To: dmtsai@linux.vbird.tsai
                X-Quarantine-ID: <v02TdcMd+Vk4>
                X-Virus-Scanned: amavisd-new at vbird.tsai
                X-Spam-Flag: YES
                X-Spam-Score: 1001.148
                X-Spam-Level: 纨绔子弟纨绔子弟纨绔子弟热情民主*
                X-Spam-Status: Yes, score=1001.148 tagged_above=5 required=6.31
                        tests=[AWL=-2.025, DNS_FROM_RFC_ABUSE=0.374, GTUBE=1000,
                        NO_RELAYS=-0.001, UNWANTED_LANGUAGE_BODY=2.8]
                # 下面的特别字体局部,第一行便是病毒扫瞄的证据!
                # 前面这几行则是运算告白信总结分数的后果啊!风趣吧!
                


              78. 主动学习抵御告白信:
              79. 在 spamassasin 所提供的功用当中,现实上有两种运用 spamassassin 的方法,一种是透过 spamd 这个 spamassassin 的效劳,另一种则是透过 spamc 这个可以让 MTA 呼唤来批次实行的顺序。在鸟哥的这个典范当中,我们是透过 amavisd-new 软件来呼唤 spamc 以处置告白信的啦!以是你的 spamassassin 的 daemon 功用不必启动的。

                别的,告白信的变革但是变化多端的,谁也搞不清晰下一次呈现告白信的状况会是怎样,以是说, 拟订去世的告白信过滤规矩是没有多大的结果的。以是啰,可以主动学习告白信的内容材料,然后主动学习更新材料库, 这才干够因应网际网络的理想严酷的形态。好佳在!我们的 spamassassin 有提供一支顺序与一个称为 bayes (贝式) 的机制来处置主动学习的功用!我们可以透过这个功用来停止分类呐!

                既然有过滤机制的材料库,那么材料库在那边啊?实在材料库次要有两个,辨别是团体的与零碎的! 我们这个案例的零碎材料库安排在 /var/amavis/.spamassassin/ 外面, 团体材料库则是在 ~/.spamassassin/ 外面。根本上,发起间接由零碎办理员间接修订零碎材料库的内容即可。 那么怎样处置新的告白函件呢?你必需如许做:
                1. 手动处置告白信材料:
                  你得要先手动的将没有被 spam 的告白信抽出来,举例来说,鸟哥将我所收到的告白信安排到 /root/mail/spam 这个文件当中,他是一个 mbox 的款式,也便是 mailbox 的款式啰。 你也可以树立一个运用者名为 spam,那么将你所收到的告白信转寄给这个运用者即可。

                2. 应用 sa-learn 学习告白信:
                  接上去你得要更新告白信的材料库了,这个举措次要是经过 sa-learn 这个指令来处置的。 你最好先以‘ man sa-learn ’来理解一下一切的参数才好。假定你的告白信安排在 /root/mail/spam 这个 mbox 款式的文件中,那么你可以如许做:
                  sa-learn --spam --mbox --dbpath /var/amavis/.spamassassin/ /root/mail/spam
                  云云一来过滤告白信的内容就会被更新了。

                3. 正常函件被误判的处置:
                  那假如有正常函件却被剖析为告白信呢?不要紧,你异样将这些函件独立出来成为一个文件, 比方 /root/mail/nospam 好了,然后如许学习:
                  sa-learn --ham --mbox --dbpath /var/amavis/.spamassassin/ /root/mail/nospam
                透过这个学习机制,你的告白信抵御会越来越准确喔!比及累积了充足的告白信学习后, 就可以修正 /etc/amavisd.conf 外面针对告白信运气的处置方法了 (由 D_PASS 酿成 D_DISCARD 看看!) 加油!


              80. 不要抛弃 exe 档名的附件:
              81. 运用了 amavisd-new 来作为病毒处置与告白信抵御真是不错的方案,不外,预设 amavisd-new 会抛弃附件夹档档名为 *.exe, .bat, .com... 等等的邮件,并且假如你将某个 .exe 文件紧缩成为 .rar 或许是 .zip 的紧缩档时, 由于我们的 Linux 有装置解紧缩软件 (如 unrar),后果...该封邮件照旧会被抛弃,而不管能否有病毒存在。

                如许真实不怎样兽性化,由于有些时分我们必需要传送一些附档名为 .exe 之类的实行档,假如预设会被抛弃, 那怎样传送出该文件?除非运用 ftp 了~真费事~不要紧,我们可以透过修正 amavisd-new 的设定档来放行喔! 处置的方法很复杂,只需如许做即可:
                [root@linux ~]# vi /etc/amavisd.conf
                找究竟下这一行,约莫在 166 行左右
                  qr'^\.(exe-ms|dll)$',
                将他改成如许:
                  qr'^\.(dll)$',
                
                找究竟下这两行,约莫在 187 行左近
                  qr'\.[^./]*[A-Za-z][^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i,
                  qr'.\.(exe|vbs|pif|scr|cpl)$'i,
                将他改成如许:
                  qr'\.[^./]*[A-Za-z][^./]*\.(vbs|pif|scr|cmd|com|cpl|dll)\.?$'i,
                  qr'.\.(vbs|pif|scr|cpl)$'i,
                
                [root@linux ~]# /etc/init.d/amavisd restart
                
                便是将含有 exe 的要害字设定给他移除便是了,云云一来,除非你的 .exe 文件含有病毒, 不然就不会被抛弃啰!

                小标题的图示其他设定小本领
                除了之前谈到的几个次要的设定之外, postfix 另有提供一些不错的设定要给各人运用的喔! 我们可以一个一个来来看看:

              82. 单封函件与单个邮件信箱的巨细限定
              83. 在预设的状况下, postfix 可承受的单封函件最大容量为 10MBytes ,不外这个数值我们是可以变动的, 举措很复杂:
                [root@linux ~]# vi /etc/postfix/main.cf
                message_size_limit =   40000000
                [root@linux ~]# postfix reload
                
                下面的单元是 bytes ,以是我将单封函件可承受巨细改为 40MByte 的意思啦!请依照你的情况来规则这个数值。 而从前我们要控制 /var/spool/mail/account 大多是运用文件零碎内的 quota 来告竣, 如今的 postfix 不需求啦!可以如许做:
                [root@linux ~]# vi /etc/postfix/main.cf
                mailbox_size_limit = 1000000000
                [root@linux ~]# postfix reload
                
                我给每团体 1GB 的空间啊!^_^

              84. 寄件备份
              85. 收件备份我们晓得可以运用 /etc/aliases 来处置的,但是假如想要送件也备份呢? 应用底下的方法即可:
                [root@linux ~]# vi /etc/postfix/main.cf
                always_bcc = some@host.name
                [root@linux ~]# postfix reload
                
                云云一来任何人寄出的函件都市复制一份给 some@host.name 谁人信箱。 不外,除非您的公司很注重一些贸易秘密,而且曾经通告过一切同仁,不然停止这个设定值, 鸟哥团体以为进犯隐私权很严峻!


                大标题的图示其他使用阐明
                除了 mail server 本人的设定值之外,我们最好照旧针对 mail server 的材料来备份啊来办理啊等等的, 以是底下有些咚咚也可以处置处置:


                小标题的图示题目反省
                固然 Mail 很方便,但是依然会有无法将函件寄出的时分!假如您曾经设定好 MTA 了,但是总是无法将邮件寄出去,那能够是什么题目呢?
                • 关于硬体装备
                  无论任何状况之下,假如硬体出题目,那么一切的效劳都将不正常啦!以是,请先反省您的硬体能否‘怪怪的!’这个先确认 OK 吧!

                • 关于网络参数的题目
                  假如连不上 Internet ,那么那边来的 Mail Server 呢?以是请先确认你的网络曾经正常的启用了! 关于网络确实认题目,请查阅前几篇‘Linux 网络侦错’的内容引见;

                • 关于效劳的题目
                  请务必确认 port 25 与 port 110 曾经准确的启动了!运用 netstat 指令即可理解能否曾经启动该效劳!

                • 关于防火墙的题目
                  许多时分,许多冤家运用 Red Hat 或许其他 Linux distribution 提供的防火墙设定软件,后果忘了启动 port 25 与 port 110 的设定,招致无法收发函件!请特殊注意这个题目喔!可以运用 iptables 来反省能否曾经启用该 port 呢!其他请参考防火墙设定那一章喔!

                • 关于 TCP_Wrappers 的题目
                  假如你的 MTA 另有援助 tcpd 这个顺序 (或许说是 libwrap 这个函式库) 的话,那么在 /etc/hosts.allow 与 /etc/hosts.deny 的设定也会影响到收发函件的正常与否!假如 /etc/hosts.deny 有设定‘ALL: ALL’的话,那么请务必在 /etc/hosts.allow 外面加设‘ sendmail: ALL ’喔!

                • 关于设定档的题目
                  在启动 postfix 或许是 sendmail 之后,在登录档当中细心看看有无错误讯息发作? 通常假如设定材料不合错误,在登录档当中都市有纪录错误的中央。

                • 关于文件权限的题目
                  假如你已经手动处置过软件的 tarball 晋级,或许是你曾本人处置过一些设定档,那么就得要留意:
                  • /etc/mail/, /etc/postfix/ :外面的文件至多都为 644 或 640 的权限!
                  • /var/spool/mqueue :务必为 700 的权限
                  • /var/spool/clientmqueue:这在 sendmail 8.12 才有,一切人与群组务必为 smmsp ,而权限务必为 770 ;
                  • 每个 ~/.forward 的文件需求控制其权限喔!

                • 其他文件的设定题目
                  假如发明只要某个 domain 可以收信,其他的统一主机的 domain 无法收信,需求反省 local-host-names 这个文件的设定, 或许是 $mydestination 的设定值才行;
                  假如发明邮件被挡上去了!并且总是表现 reject 的字样,那么能够被 access 挡住了;
                  假如发明邮件伫列 (mailq) 存在许多的邮件,能够是 DNS 去世失了,请反省 /etc/resolv.conf 的设定能否准确!

                • 其他能够的题目
                  最常发作的便是认证的题目了!这是由于运用者没有在 MUA 下面设定‘我的邮件需求认证’的选项啦! 请叫你的用户赶忙勾选吧!

                • 照旧不晓得题目的处理方案
                  假如照旧查不出题目的话,那么请务必反省您的 /var/log/maillog (有的时分是 /var/log/mail ,这个要看 /etc/syslog.conf 的设定),当你寄出一封信的时分,比方 dmtsai 寄给 bird2@linux.vbird.tsai 时,那么 maillog 文件外面会表现出两行,一举动 from dmtsai 一举动 to bird2@linux.vbird.tsai, 也便是‘我由那边收到信,而这封信会寄到那边去!’的意思,由这两行就可以理解题目了!尤其是 to 的那一行,外面包括了相称多的有效资讯,包罗邮件无法传送的错误缘由的记录! 假如您关于登录档不熟,请拿出‘根底学习篇’外面的‘看法登录档’一文吧!

                小标题的图示哪些材料要备份
                不论什么时分,备份总是紧张的!那么假如我是单纯的 Mail Server 罢了,我需求的备份材料有哪些呢?
                • /etc/passwd, /etc/shadow, /etc/group 等与帐号有关的材料;
                • /etc/mail, /etc/postfix/ 底下的一切文件材料;
                • /etc/aliases 等等 MTA 相干文件;
                • /home 底下的一切运用者材料;
                • /var/spool/mail 底下的文件与 /var/spool/postfix 邮件伫列文件;
                • 假如是 Sendmail 8.12 则可以思索贮存 /var/spool/clientmqueue。
                • 其他如告白软件、病毒扫瞄软件等等的设定与界说档。

                小标题的图示quota 与目次移转
                网络上有许多‘收费的电子邮件信箱’空间,普通而言,运用的便是 quota 这个磁碟配额东西!由于我们的 Linux 主机硬碟空间便是这么多!固然啰, 运用磁碟配额 (quota) 会是一个对各人比拟公道的办法!运用 quota 的本领曾经在‘根底学习篇’外面引见过了,这里不再反复引见,要引见的是几个能够会发作在实践的案例中的一些小本领:

              86. 邮件信箱地点的磁碟空间缺乏了
              87. 这是很能够会发作的题目啊!尤其是在用量很大的网站下面!这个时分你的处理办法次要有:
                1. 新添加一颗硬碟,款式化好之后将他 mount 到 /var/spool/mail 这个目次下;
                2. 假如主机外面另有其他目次具有很大的空间,比方 /home 这个中央,那么就可以:
                    cd /var/spool
                    mv mail /home
                    ln -s /home/mail mail
              88. 运用 quota 设定:
              89. 普通而言,我们通常会将 /home 做为 quota 的 partition ,那么 /var/spool/mail 实在也可以依靠在 /home 这个 partition 之下,来到达 quota 关于运用者的标准喔!告竣的办法很复杂啦:
                1. 先在主机计划与装置的时分,让 /home 独立于一个 partition 当中;
                2. 以‘鸟哥的 Linux 私房菜 -- 根底学习篇’的 quota 内容为典范,树立好 /home 的 quota 限额;
                3. 将 /var/spool/mail 整个搬到 /home 底下,并做好保持的举措就可以立刻失效啦:
                    cd /var/spool
                    mv mail /home
                    ln -s /home/mail mail
              90. 关于运用者邮件的安排所在
              91. 许多的读者能够喜好让每个运用者去到本人的家目次读取 mail box 的咚咚,亦便是将 /var/spool/mail 的内容给他搬到一般的家目次去!比方 dmtsai 的 mail box 酿成的 /home/dmtsai/dmtsai 这个文件!不外,云云一来的话, MTA 与 pop 都将需求改写其 source code !以是‘不发起这么搞喔!’

                大标题的图示重点回忆
                • 电子邮件效劳器的设定需求特殊注意,以免被作为告白信与渣滓信的跳板;
                • Mail server 运用的主机称号至多需求 A 的 DNS 标记,不外最好可以具有 MX 标记为宜,且正反解最好成对, 比拟可以防止大型主机的抵御;
                • 邮件主机次要是指 SMTP (复杂邮件传送协议) 罢了,不外要搭建一台可应用相似 Thunderbird 收发的邮件效劳器, 最好可以具有 SMTP 以及 POP3 等通讯协议;
                • 电子邮件传送的元件,次要有 MUA, MTA, MDA 以及终极的 Mailbox 等等;
                • 电子邮件效劳器最需求搞定的中央实在是 Relay 的功用,万万不行 Open Relay 喔!
                • 一封电子邮件至多含有 header 以及 body 等材料在内;
                • 罕见的可以启动 SMTP 的软件有 sendmail, postfix 及 qmail 等等。
                • 为防止收到少量的告白信,发起您不要将 email address 放在网际网络上,若需求某些功用必须将邮件位址放在网络上时, 最好可以拥有两个邮件位址,一个用来地下,一个则用来作为本人的次要联结之用。
                • 本章与 LPI 认证的干系:在 LPI 网站 http://www.lpi.org 外面提到的,关于 Sendmail 的测验题库的中央,只要在 LPI level 1 的 102 ,外面的 topic 113 Networking Services ,第二点当中,浅易的 Sendmail 设定。夸大的是‘应试者必需复杂的设定 sendmail (指的应该是 m4 scripts ,不外会很复杂!不要担忧~)、可以树立 mail aliases 、可以办理邮件伫列、可以启动或许是封闭 sendmail 这个效劳、理解运用者的邮件转递 (forward 功用),以及复杂的 sendmail 除错!别的,应试者也需求理解什么是 Open Relay 与防止 Open Relay 才行!’至于会考的文件与指令能够有这些:

                大标题的图示课后训练
                • 当你应用你的 MTA 发信时,后果居然被退信,退信的讯息 (/var/log/maillog) 最次要的错误是‘mail loop to me’, 叨教能够的发作缘由及处置方法为何?
                • 能够发作的缘由是由于你的 MTA 设定项目方面的主机称号错误。判别你的 MTA 主机有多个 IP 存在, 不外你并未完全写入设定档中,因而形成某些主机称号无法被 MTA 所接纳之故。在 sendmail 方面, 你只需将需求的主机称号写入 /etc/mail/local-host-names 即可,假如是 postfix ,则在 /etc/postfix/main.cf 当中修正 $mydestination 谁人设定项目即可。
                • 我在运用 Sendmail 寄信时,却发作底下这个题目,叨教能够的发作缘由为何?
                • 能够的题目有两个:
                  • 你的 Client 端电脑的 IP 或许是网络位址被 /etc/mail/access 所挡住,或许是 /etc/mail/access 没有翻开你的 RELAY 权利;
                  • 你有停止 SMTP 邮件认证的设定,但是遗忘在 MUA 当中设定帐号与暗码的项目了!
                  • 假如不是这两个缘由,那么能够的题目就多了!请细致的反省您的网络设定!
                • 请列出四个 Mail Server 的相干的元件,以及其服从为何?
                  • Mail Client :邮件用户端,实在便是运用 mail 的那位运用者地点的电脑即可称为 mail client ;
                  • Mail User Agent :为一个使用软件,次要的功用便是收受邮件主机的电子邮件,以及提供运用者阅读与编写邮件的功用;
                  • Mail Transfer Agent :为在电脑与当地端 Mail server 或 Internet 下面的 Mail server 传送讯息与邮件的主机;
                  • Mail Dilivery Agent :次要的功用便是将 MTA 所收受的本机函件,安排到本机帐户下的邮件文件中 ( Mailbox )!
                • POP3 与 SMTP 的功用为何?
                  • SMTP 为运用于 MUA 或 MTA 与 MTA 之间的传输协议,通常运用 port 25 ,只需主机援助 SMTP ,而且其他 relay 的条件能共同,就可以停止邮件通报!
                  • POP3 可以提供运用者经过 MUA 到 MTA 下载邮件,同时并可将邮件从主机下面删除!
                • 请复杂的阐明 DNS 外面 MX 标记与 Mail 的干系为何?
                • MX recode 可以可以让 mail server 经过 MX 以及 A ( address ) 这个记载来停止 mail gateway 与 mail route 的功用!可以到达的作用相称的多!
                • 明天我忽然衰亡,想要修正我的 sendmail ,叨教, sendmail 的设定档在那边?而我要以什么顺序修正 sendmail 呢?
                • Sendmail 的设定档为 sendmail.cf ,这个文件通常安排在 /etc/sendmail.cf 或许 /etc/mail/sendmail.cf 您可以手动的编辑这个文件,不外不发起云云,获得代之的,可以运用 m4 这个顺序来停止 macro 的举措,进一步的完成 sendmail.cf 的修正!至于运用 m4 时,需求先树立 m4 scripts ,再以 m4 转换才干构成 sendmail.cf 喔!
                • 什么是 mailling list ?在 sendmail 底下有什么办法可以不藉由其他的软件到达 mailling list 的功用?
                • Mailling list 便是将运用者寄给一个帐号邮件时,该帐号会自动的将该邮件传送到一切的用户去!有点相似现在的电子报!在 sendmail 底下,我们可以透过 aliases (需共同 newaliases) 以及 ~/.forward 来告竣喔!
                • 怎样观察邮件伫列的内容,以及邮件伫列内容安排在何方?
                • 运用 mailq 即可晓得现在邮件伫列的内容,而邮件伫列固然可以透过 sendmail.cf 来修正,不外,预设状况下,都因此 /var/spool/mqueue 为邮件伫列目次。
                • 若我的 sendmail 主机有许多称号,我想让这些称号都可以停止 mail 的接纳,应该修正什么文件?
                • 可以修正 /etc/mail/local-host-names 来告竣!
                • 什么是 Open Relay?
                • 所谓的 Open Relay 便是,不管发信端来自那边,您的 Open Relay 的主机均可以帮发信端将函件发送出去,这个称为 Open Relay 。假如您的 mail server 具有 open relay 的状况,那么很容易蒙受到渣滓邮件的添补, 不光形成网络频宽的消耗,也容易让您的主机被参加黑名单当中!
                • 假如要让 Postfix 可以收发来自非本机的内部函件,您可以修正 main.cf 外面的什么参数?
                • 需求在 main.cf 外面修正的变数次要有:
                  1. 当 Client 来自大任的网络,也便是 IP 契合 $mynetworks 的设定值时;
                  2. 当 Client 来自大任的呆板,也便是主机称号契合 $relay_domains 的设定项目时;
                  3. 当 Client 来自不信托的网络,但是去的目标田主机端契合 $relay_domains 的设定时。
                • 怎样观察您现在的 Postfix 效劳器的一切设定参数?(运用什么指令?)
                • 应用 postconf -n 可以观察‘现在 main.cf 外面设定的参数’,而假如要看一切的参数,则间接运用 postconf 即可!
                • Mail Server 可否运作与 DNS ( MX 与 A recode )的相干性为何?
                • 现在网际网络社汇合法的 Mail server 通常仅会针对具有 MX 标记的邮件主机收回函件罢了。 而假如有多重 MX 时,起首会选择最小 MX 主机寄信,依序处置。而终极根据 MX 主机的 A 标记来查得终极目的。
                • 什么是 smtp, pop3 以及 imap 协议,他们的用处辨别是什么?
                • smtp:用来通报邮件的协议,通常我们称为 MTA 便是此一协议所告竣
                • pop3:让 client 端向主机端要求收信的协议,通常预设收信完成后,主机真个 mail box 会被删除;
                • imap:与 pop3 相似,不外 imap 容许运用者在主机的家目次树立邮件材料匣

                大标题的图示参考材料

                2006/11/13:预备将本来的 sendmail 以及 postfix 整分解为一篇专门引见 Mail server 的小文章啰!
                2006/11/14:本来的 sendmail 请参考这里,本来的 Postfix 则请参考这里。至于人数统计则以 sendmail 本来网页添加。
                2006/11/30:加上了邮件扫瞄与告白信抵御的 spamassassin 机制,呼呼!好累~
                2006/12/05:加上主动学习告白信抵御机制方面的复杂引见。
                2007/02/07:新增不要抛弃 exe 附档名的资讯!
                2007/02/27:感激网友 Cheng-Lin Yang 提供的意见,在黑名单材料库添加了 http://www.anti-spam.org.cn/, http://www.spamhaus.org/
                2007/04/05:感激 chunkit 兄的来信见告,将本来的 mail localhost 25 改成 telnet localhost 25 !

                 
                     
                中国存储网 ChinaStor.com排版整理
                原文作者鸟哥,主页,更多Linux学习材料在线看:Linux零碎办理员手册 - Linux下令大全 - Linux挪用大全- Linux专栏 - 国产Linux