• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • sendmail小結

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    2005-04-09(sendmail小結) 一、郵件模型 MUA (message user agent) --從MTA取的信,或者通過POP,IMAP把信發到MTA上 MTA(message transfer agent) --監視MUA的請求 ,找出對方的MTA,把信傳到對方MTA 服務器 ,或者把信收到郵件隊列 MDA(message deliver a

    2005-04-09(sendmail小結)
    一、郵件模型
    MUA  (message user agent)
     --從MTA取的信,或者通過POP,IMAP把信發到MTA上
    MTA (message transfer agent)
     --監視MUA的請求 ,找出對方的MTA,把信傳到對方MTA服務器,或者把信收到郵件隊列
    MDA (message deliver agent)
     ---把信最終投遞到具體的用戶

    通常情況下  一封 郵件通過MUA把信傳到MTA服務器 或者從MTA服務器把信取到本機 通過MTA傳送給對方的MTA服務器的服務隊列,通過MDA發給指定用戶,


    二、基礎
    1。smtp協議(simple mail transfer protocol)
    明文傳輸
    基于tcp服務的應用層
    使用端口:25
    基礎使用方法:
    telnet adf141.allyes.com 25
    helo station1
    mail from :abc@citiz.net
    rcpt to :youlyy@163.com
    data
    it's test!
    .
    quit


    2.sendmail 是使用smtp協議的郵件提交工具,承擔mta和MDA的作用

    后臺進程:sendmail
    腳本:/etc/init.d/sendmail
    需要包:sendmail,(sendmail-doc,m4,)第三張  sendmail-cf(第二張)(rhel在第三張中)
     imap(在第二盤中)

    3。logs記錄在/var/log/mailog中

    4。MDA把郵件根據用戶名收到/var/spool/mail下,等用戶閱讀完信后,未被刪除的郵件會自動轉存到用戶主目錄下的mbox文件中。

    5.開啟調試模式
    sendmail -d0 </del/null(  如果返回的主機名是localhost,檢查主機名)

    6。以檢驗模式發信
    echo "abc" |mail -v -s test root@allyes.com

    三、配置sendmail之sendmail.mc
    1. 通常用m4生成 sendmail的配置文件sendmail.cf
    默認做法是:
    m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf
    做前   備份
    每次修改配置需要重新啟動服務。

    2。關于sendmail.cf
     DNL 是注釋作用
     


    3。
    常用語句

    默認情況sendmail只監聽本地連接
    DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
    實驗時應該把他 禁掉否則無法收信
    可以用netstat -lanp 監聽所有,netstat -lnt監聽 tcp端口


    m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf   指定sendmail.cf位置
    define(`ALIAS_FILE', `/etc/aliases')dnl 定義aliases位置


    FEATURE(`blacklist_recipients')dnl允許使用黑名單 查禁收件人
    然后用戶才可以用aclearcase/" target="_blank" >ccess文件 設定黑名單


    FEATURE(`accept_unresolvable_domains')dnl
    接受無法解析的域來的郵件


    FEATURE(`promiscuous_relay')dnl
    開啟轉發,默認是不允許的。


    define(`confMAX_MESSAGE_SIZE',`15000000')dnl
    限制最大發送字節

    define(confMAX_HOP,30)
    設置轉發的地址不超過 30個

    四、配置sendmail之access
    寫法:

      *舉例*   *設定值(注意:不是一一對應,只是解釋)*  *含義*
    IP     61.152.241.137  OK     接收,即使被其他           拒絕

    IP(子網) 61和61.152和61.152.241都可以  relay     允許relay

    域名    allyes.com    reject     拒絕并顯示錯誤

    email地址  youyou@allyes.com   discard    安靜的接收后取消

    本地用戶名 youyou@   xyz some other text   501是錯誤代碼,后           面的文字是自定義           錯誤信息
         (如"501 no e-mail from this domain")


    編輯完成/etc/mail/access后 需要在 /etc/mail目錄下 make access.db

    reject 時logs會抱    DSN: Service unavailable  服務器logs會抱 deny
    而discard則 客戶機上不報錯     服務器會顯示discard


    五、配置sendmail之alias
    在 /etc/aliases 這個檔案中,您會發現沒有“#”注解的每一行,開始都是一個名稱,然後跟著一個“:”符號,然後在其右邊又有其它的名稱。其工作原理是:當 sendmail 收到一個本地郵件的時候,會檢查這個 /etc/aliase 檔案,如果發現“:”左邊的名字跟接收者名稱吻合,就會將郵件轉遞給“:”右邊的名稱。在右邊的名稱,可以多過一個;也可以是另一個郵件地址;也可以指向一個檔案或程式。當郵件轉給右邊之後,又重新找一遍這個 /etc/alias 里面的設定,直到再找不到左邊名稱為止。例如下面這個例子:

    MAILER-DAEMON:  postmaster
    postmaster:     root
    daemon:         root
    root:          netman, kenny
    kenny: "| sendmail kenny@other.mail.net"
    sales: sales-list
    sales-list: ":include:/etc/sales.list"

    這樣,凡是傳給 MAILER-DAEMON 的就會轉給 postmaster ,然後再轉給 root,另外 daemon 也會轉給 root,而 root 呢,又分別轉給 netman 和 kenny,最後 natman 再也找不到名稱了,直接送到 netman 的信箱去;而 kenny 呢?則通過 sendmail 轉到 kenny@other.mail.net 那個地址去。另外,我們只需建立一個 /etc/sales.list 這樣的檔案,在里面寫上所有 sales 的名稱,可以全部為一行,用‘,’和一個空白鍵分隔;這樣,所有 salse 都會收到寄給 sales 的郵件了。


    六、配置sendmail之virtusertable
    如同Apache一樣,sendmail也允許使用虛擬主機功能,這是通過FEATURE(virtusertable)功能實現的,而虛擬主機的文件缺省是/etc/mail/virtusertable。這個文件的形式類似于aliases文件,即:左地址 右地址 ,中間用Tab鍵分開。還需要注意的是,虛擬域(左地址的域名),應該屬于本機接收之列。

    joe@yourdomain.com      jschmoe                         (1)
    bogus@yourdomain.com    error:nouser No such user here  (2)
    @testdomain.com         test@mydomain.com               (3)
    @yourdomain.com         %1@othercompany.com             (4)

    (1)    這樣一行意味著本來應該發送給 joe@yourdomain.com 的郵件現在要發送給本機的 用戶 jschmoe。
    (2)    發向 bogus@yourdomain.com 的郵件,返回錯誤信息。
    (3)    意味著所有發往 xxx@testdomain 的郵件都會被發送到 test@mydomain.com。
    (4)    代表參數轉義,例如 user1@yourdomain.com 的郵件被發送到user1@othercompany.com。

    aliases 文件同樣可以將本地用戶,映射到其它地址,那么和 virtusertable 的優先級如何?[1]

       1. 當接收者郵件地址的域部分在 /etc/mail/local-host-names 中又在/etc/mail/virtusertable中時,優先檢查virtusertable文件,應用該文件中的定義規則.
       2. 要應用virtusertable規則,則接收者郵件地址的域部分必須在 /etc/mail/local-host-names 文件中存在
       3. 若接收者郵件地址的域部分在 /etc/mail/local-host-names 文件中但不在 virtusertable 文件中有相應的定義則先只應用 aliases 中的定義去擴展別名,一旦擴展出的別名接收者郵件的域部分在 virtusertable 中有定義行時則決不再別名下去,馬上運行virtusertable中的定義規則。


    七、配置sendmail之 /etc/sendmail.cw
    (注意:假如您將 sendmail 升級到 8.10 版本以後,sendmail.cw 已經改用 local-host-names 了)


    (作用:用來設定郵件伺服器別名的檔案
    修改 sendmail.cw 讓 sendmail 接收不同 domain 的郵件了)

    從您的 Linux 主機幾出去的郵件,其回郵地址格式是這樣的:user@host.your.domain.name 呢?如果您按 Repply 回復到這個地址,應該沒問題的,但您有試過使用 user@your.domain.name 這樣的格式嗎?試試就知道了:如果您沒做任何設定,這樣的地址是寄不到使用者信箱的。

    有辦法解決嗎?當然有啦,而且很簡單呢!您只要將 your.domain.name 放進 /etc/sendmail.cw這個檔案就可以了,這是用來設定郵件伺服器別名的檔案。如果您有多個別名(或曰 domain )要這臺主機接收,那麼將它們全部寫進這個檔案,一個名稱占一行。然後,您竟然無需重新啟動 sendmail 或任何服務,設定就已經生效了!


    八、sendmail修改配置后需要注意的
    A。修改配置  m4 /etc/mail/sendmail.mc>sendmail.cf  需要重新啟動服務
    B。修改配置 /etc/access  需要make access.db 重新構建數據庫
    C。修改配置 /etc/alias        需要newalias  更新別名


    九、接收郵件(pop3和IMAP)
    pop3(post office protocol)是明文傳輸

    直接telnet端口 pop3是110 imap 是143
    命令如下:
    telnet 61.152.241.141 110
    user aaron_you
    pass abc
    list
    retr 1
    dele 1
    quit

    imap (internet message access protocol)和pop3相比 支持在下載郵件前 先下載郵件頭預覽。

    開啟服務方法
    修改/etc/xinetd.d/pop3和imap 中yes 改no


    2005-04-19 調試出錯logs
    這個是系統root的信,
    This is a MIME-encapsulated message

    --j378wHE8009941.1112864297/localhost.localdomain

    The original message was received at Thu, 7 Apr 2005 16:58:17 +0800
    from localhost.localdomain [127.0.0.1]

       ----- The following addresses had permanent fatal errors -----
    <aaron@you.com>

       ----- Transcript of session follows -----
    550 5.1.2 <aaron@you.com>... Host unknown (Name server: 192.168.0.253.you.com.: host not found)


    在maillogs里
    Apr  7 16:54:20 localhost sendmail[9893]: j378ZWkx009800: to=<aaron@you.com>, ctladdr=<root@localhost.localdoma
    in> (0/0), delay=00:18:28, xdelay=00:00:00, mailer=esmtp, pri=210324, relay=192.168.0.253.you.com., dsn=5.1.2,
    stat=Host unknown (Name server: 192.168.0.253.you.com.: host not found)


    hostname沒有修改

    以后測試 需要先
    sendmail -d0 </dev/dull

    實驗:sendmail

    1。如果主機名沒有配的話 用telnet時,會報relay deny
    所以千萬記得配主機名
    2。如果郵件服務器沒有把127.0.0.0這句默認只監聽本機的sendmail.mc注釋掉
    那么是沒有其他機器是沒有辦法telnet近來的。
    同時對于做測試的 發郵件的客戶機器,如果沒有把這句注釋掉,結果是telnet成功
    但是用echo hello |mail -s -v aaa@aaa.com 發信 始終保持在隊列里,無法發出
    必須注釋掉,才可以,原因不詳。
    3。telnet 25端口   和   用 echo hello |mail -s -v aaa@aaa.com
    都可以發信,但是區別在于前者不需要mx記錄,是直接發信。
    后者需要解析本域的MX記錄

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>