郵件系統

宋方睿 (@Mask_Ray)

maskray.me

意義

  • Transactional email
  • Linux桌面折騰用戶

結構

  • Mail user agent (MUA)
  • Mail submission agent (MSA)
  • Mail transfer agent (MTA)
  • Mail retrieval agent (MTA)

Mail User Agent

  • Mutt
  • Thunderbird
  • Webmail

Mail Submission Agent

  • /etc/services
    submission  587/tcp  # mail message submission

Mail Transfer Agent

  • 25/tcp
  • Sendmail
  • qmail
  • Postfix
  • Exim

郵件首部字段

Carbon Copy (Cc:)

  • 用複寫紙複寫
  • 裏借用了這個術語表示把副本抄送給非主要收件人

Blind Carbon Copy (Bcc:)

  • RFC5322提及郵件客戶端有三種處理Bcc:的方式
  • 最常見的:To、Cc、Bcc看到空的Bcc:首部
  • 在Gmail裏發封沒有To:、Cc:,只有Bcc:的郵件,收件人就會看到To: undisclosed-recipients: ;

Signature Block

  • 簽名信息
  • 一般使用兩個連字符跟着一個空格和一個換行符(sig dashes)
  • "-- \n"
  • 郵件客戶端可以認出雙連字符記號用與正文不同的樣式標記出來或者隱藏

Top Posting vs Bottom Posting

  • 在回覆郵件時,表示回覆文本時在原文下面寫回覆還是在原文上面先回覆
  • 傳統的方式是採用bottom posting

Top Posting vs Bottom Posting

  • 先發生的事(引文)出現在前面、後發生的(回覆)出現在後面在時間順序上較爲自然
  • 而top posting則會對理清事件的先後順序造成阻礙

Top Posting vs Bottom Posting

  • 網頁版郵件客戶端的興起和非黑客郵件使用者數目的激增
  • 網頁版郵件客戶端的興起和非黑客郵件使用者數目的激增
  • Top posting能減少鼠標滾動
  • Mutt默認就設置了快捷鍵跳到下一個不包含引文的行

Local part

  • 大小寫區分
  • Received: from edgebj.hnair.com (edgebj.hnair.com. [1.202.236.139])
            by mx.google.com with ESMTP id p6si25031100paa.47.2013.07.11.22.25.33
            for <EMACSRAY@gmail.com>;
            Thu, 11 Jul 2013 22:25:34 -0700 (PDT)

Reply-To:

  • 爲用戶回覆郵件時提供建議,設定新郵件的To:首部。

In-Reply-To:

  • 標識本郵件所回覆的郵件

References:

  • 標識郵件列表裏本郵件的祖先關係
  • References:中最後一個message identifier爲parent
  • 以前QQ webmail不支持Refences:和In-Replt-To:導致線索中斷
  • 2013年下半年收到的部分QQ webmail郵件帶有上述首部

Mail-Followup-To:

f=f

  • format=fixed
  • format=flowed

收郵件

  • POP3
  • IMAP
  • Microsoft Exchange ActiveSync

POP3

    % openssl s_client -connect example:pop3s
    +OK Dovecot ready.
    USER ray
    +OK
    PASS ray
    +OK Logged in.
    LIST
    +OK 3 messages.
    1 200
    2 310
    3 203
    .
    RETR 2
    ......
    DELE 2
    +OK
    QUIT
    +OK Logging out.

IMAP

  • telnet example imap
    openssl s_client -connect example:imaps
    a login ray ray
    a list "" "*"
    a logout

防Spam

  • SPF
  • DKIM

Sender Policy Framework

  • DNS
  • maskray.me. 600  IN TXT "v=spf1 include:hotmail.com ~all"
    net9.org.   3600 IN SPF "v=spf1 a ~all"

DomainKeys Identified Mail

  • DNS
  • opendkim

桌面Linux折騰

  • http://maskray.me/blog/2012-11-13-personal-mail-system
  • offlineimap, msmtp, notmuch, procmail
  • mailx (/bin/mail)

CDN

  • 易犯錯誤
  • 同時指定CNAME和MX兩種resource record
  • RFC1912 section 2.4: A CNAME record is not allowed to coexist with any other data.

CDN (Cont.)

  • @ CNAME www.example.com.
    @ MX mx.example.com.
  • Google webmaster會檢測報告網站DNS error導致內容無法被檢索

其他

  • smtp.exmail.qq.com
  • 不含 From: 或者 To: ,smtp.exmail.qq.com 會回覆 250 Ok: queued as

謝謝