顯示具有 Postfix 標籤的文章。 顯示所有文章
顯示具有 Postfix 標籤的文章。 顯示所有文章

2009年7月3日 星期五

Postfix Email Server with Godaddy Turbo SSL

首先為何要買 SSL Certificates (SSL 憑證),自己簽發的不可以嗎? 當然可以,但自己簽發的根憑證 (root cert) 不是每部電腦都有,「種」在 browser 內不是每一個用戶都能理解。有一張已經在大部份 browser/email client 已經有的 root cert 就沒有「憑證錯誤」的問題。

如果你只想要 SSL connection 又不想用戶見到「憑證錯誤」。(例如以下的 smtps 情況),Godaddy 有一張叫 Turbo Standard SSL Cert便已足夠, 只要在網上找到 promo code (找不到的請電郵給我), US$12.99/year 便可以申請到。只要:

1. 確定你的 domain name 沒有設定為 private,administrative contact 上的電郵地址沒有錯誤。
2. Godaddy 的認證信會寄到這個地址的。

申請程序 Godaddy 的網頁有寫了,最主要是製造一個 CSR 檔,再 submit 上去。




Step 1
su -
mkdir /etc/postfix/ssl cd /etc/postfix/ssl
openssl genrsa -out mail.example.net.key 1024

Step 2
openssl req -new -nodes -key mail.example.net.key -out mail.example.csr
就是 submit 這張 csr 到上述的那網頁。
要留意的是 common name 必需是 mail.example.net (Full Qualified hostname of your email server)

Step 3
在 "Please select your server software from the drop-down list below" 的選項裏,請選 "Apache"。我不知其他的選項如何,但我試過選 "Others" ,出來的 SSL 不能在 postfix 內使用。

Step 4
Submit 了 CSR 檔後,確認信(基本上是即時有)會寄到 whois 的 administrative contact ,跟著信上的指示便可下載一個 zip file (內有 mail.example.net.crt 和 gd_bundle.crt 兩個檔案)

Step 5
將兩個檔案放在 /etc/postfix/ssl 目錄下,加上原有的 mail.example.net.key ,再合成一個 pem 檔。
cat mail.exampel.net.key mail.example.net.crt gd_bundle.crt >> mail.example.net.pem

Step 6
有關在 Postfix 使用 SSL/TLS 的設定,在 /etc/postfix/main.cf 內加上:

####### smtp auth
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
local_recipient_maps =
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/mail.example.net.key
smtpd_tls_cert_file = /etc/postfix/ssl/mail.example.net.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
########

2007年3月7日 星期三

Email Migration (續篇)

我在 Email Migration 這一篇介紹了如何利用 postfix 的 transport file 來做 email migration 的過程,但有一點是要留意的:

要和 ISP (或原來的 email provider) 事前計劃好,MX 轉了後,他們仍然會繼續接收 email。

我最近跟 PCCW 的 Netvigator 「搏鬥」了幾小時。原來他們的替客戶 host email 和 DNS MX 是一個整合服務。客戶轉了 MX Record 則代表 email hosting 服務也取消了。我是在轉了 MX Record 的翌日 (即 TTL 完了後) 在 maillog 上發現全部轉到 Netvigator 的 MTA 的電郵都是 "Relaying Denied"。手動測試也證實他們已將我客戶的 domain 在 email hosting 除去了。我立即致電給他們技術支援部,憤怒的是他們要幾小時後才有一位職位較高的技術人員回電給我 (或者可以說轉了又轉才有人知道我是投訴甚麼)。

我跟此人講了接近一小時,我要他明白 Email hosting 和 MX Record 是兩碼子事情,轉了 MX Record 不代表你可以取消 Email hosting 。外面有很多 Email Management 服務公司就是將 MX record 轉了給他們後做 email filtering (或其他處理) 才轉回原有的 hosting 公司。
再者就算取消 email hosting 也不應在 TTL 完了就立即執行 (其實我問過此位技術人員能否好肯定的告訴我是否 TTL 完了就取消,他也不知道...) 全世界有很多 internal DNS server 可能仍然 cache 舊的 netvigator MTA ,你這麼一做就會令對方寄不到信。
但無論我怎麼說,他都是機械地說這是公司的政策,Email hosting 是取消了。

算!!! 收線!! 和客戶商議後立即 postfix 的 transport 轉信取消。

故事到此還未完!! 當我下一天不死心的再測試 Netvigator 的 MTA 時發現他又再接受我客戶的 domain 了。真是一個字 : 妖!!

2007年2月8日 星期四

Email Migration

我的一個客戶一向都是在 ISP host 他公司的電郵的,因為希望有更為大的電郵管理彈性,所以選擇了在公司內 host email server。有關 email migration 的過程可以跟大家分享一下:

MX record 當然要改為新 server 的 ip address。但如果轉了 MX record ,那麼一般用戶就需要兩邊收電郵了 (因為寄件人的 smtp server 可能仍然 cache 舊的 mx record),為了避免這種情況,我會先將新的 email server 改為轉寄閘道器 (relay gateway) 幾天 (通常我會用 DNS 的 TTL (time to live) x 3)。那麼縱然 MX record 轉了,用戶在這幾天仍然使用 ISP 的 server 收發郵件。

Domain: mycustomer.com.hk
MX record (原本): mail.isp.com.hk
新 MX record: mail.mycustomer.com.hk

以下是 Postfix 需要更改的設定,但其他 MTA 的原理都是一樣的,只是設定名稱不同。

In /etc/postfix/main.cf file:
mydestination = $myhostname, localhost
relay_domains = mycustomer.com.hk
transport_maps=hash:/etc/postfix/transport

In /etc/postfix/transport file:
mycustomer.com.hk smtp:[mail.isp.com.hk]

這樣所有郵件將會先經這部 server 再 relay 到 ISP 的電郵伺服器上。到正式 migration 那天,只需要除去上面設定,再到用戶的 email client:

1. POP 走 ISP email server 上舊的電郵
2. 建立新的郵件帳戶,指向新的 email server