投稿信箱郵件測試

Postfix設定檔中文說明

(下面是我使用的main.cf檔案,包含多數我會用到的設定,
 有些進階的使用方式,會慢慢試著更新它...時間不明...)
 
 # Postfix 主要的組態檔,刪除了多數說明文字,
 # 並且嘗試依照最常用的郵件主機設定來依序設定與說明,
 # 許多不常用的設定並未列出。
 ### 0. 幾個 Postfix 主要的設置參數,一般狀況下不需要更改。
 queue_directory = /var/spool/postfix
 command_directory = /usr/sbin
 daemon_directory = /usr/libexec/postfix
 mail_owner = postfix
 ##
 # 一、設定郵件主機的識別身份(重要)
 # myhostname 主機名稱:如果系統設置得當,應該不用設置,系統會以gethostname()取得
 # mydomain 網域名稱:預設會以myhostname第一個點之後的作為domain名稱
 # myorigin 補齊缺少的資訊:自動補齊資訊所用的,通常使用網域名稱
 # mydestination 本地網域:指Postfix應該視為「本地網域」的所有網域名稱
 # (本地網域的部份會後續在設定)
 #myhostname = host.domain.tld
 #mydomain = domain.tld
 myorigin = $mydomain
 ##
 # 二、設定 Postfix 能使用的網路介面(重要)
 # (如果是對外服務的郵件主機,就必須要設定為all,預設為localhost)
 inet_interfaces = all
 #inet_interfaces = $myhostname
 #inet_interfaces = $myhostname, localhost
 #inet_interfaces = localhost
 ##
 # 三、先設定簡易的代轉(Relay)管控
 # 3.1 mynetworks_style 提供三種簡易設定型態
 # class =>與伺服器位於同一級IP網路的主機都可以使用代轉服務
 # subnet =>所在網域的任一個IP都可以使用代轉服務
 # host =>僅開放localhost為信任‧可代轉的主機
 #mynetworks_style = class
 #mynetworks_style = subnet
 #mynetworks_style = host
 # 3.2 mynetworks 明確設定可使用relay的主機範圍
 # (優先於mynetworks_style,建議採用此種設定法)
 mynetworks = 192.168.0.0/24, 192.168.1.0/24, 127.0.0.0/8
 #mynetworks = $config_directory/mynetworks
 #mynetworks = hash:/etc/postfix/network_table
 ##
 # 四、設定Postfix會收下信件的網域
 # Postfix會收下四種特定網域的信件,除了main.cf中的設定外,
 # 也應該被正確的設置在DNS中的MX紀錄中。
 # (1)本地網域(local domain)=>由mydestination參數設定
 # (2)代轉網域(relay domains)=>由relay_domains參數設定
 # (3)虛擬網域(virtual domains)之虛擬別名(virtual aliases)
 # =>由 virtual_alias_domains參數設定
 # (4)虛擬網域之虛擬信箱(virtual mailboxes)
 # =>由 virtual_mailbox_domains參數設定
 # (上列四種設定不應重複,網域已設為本地網域,就不應該出現在代轉網域)
 # 4.1 設定本地網域
 #mydestination = $myhostname, localhost.$mydomain
 mydestination = $myhostname, localhost.$mydomain, $mydomain
 #mydestination = $myhostname, localhost.$mydomain, $mydomain,
 # mail.$mydomain, www.$mydomain, ftp.$mydomain
 # 4.2 設定代轉網域
 # Postfix 預設會提供代轉服務的設置:
 # (代轉服務=該網域並非由本Postfix MTA所管控,但可以代轉發)
 # - 從信任的客戶端(指ip符合$mynetworks)寄出到任何目的地
 # - 從非信任的客戶端寄出到符合$relay_domains或其下次網域的目的地
 # 若信件終點站是relay_domains參數中的網址,被視為外地郵件,
 # 由 relay MDA來執行投遞作業。
 # relay_domains 預設值= $mydestination.(主機名稱)
 #
 # 4.3 設定虛擬別名‧網域
 #
 # 4.4 設定虛擬信箱‧網域
 #
 ##
 # 五、改寫位址格式
 # 5.1 Postfix預設會以$myorigin或mydomain附加到不完整的電郵位址。
 # 5.2 正式位址
 # 另外提供了一種正式位址代換的機制 canonical map(正格表)
 # (1)修改 /etc/postfix/canonical
 # (2)再執行 postmap /etc/postfix/canonical
 # (3)記得要重新載入 postfix reload
 # 正格表的撰寫方式:
 # eric@example.com eric.wu@example.com
 # eric@example.com eric@oreilly.com
 #
 # canonical_maps = hash:/etc/postfix/canonical
 #
 # Postfix也提供額外的參數設置特定的位址
 # sender_canonical_maps 僅修改發信者位址
 # recipient_canonical_maps 僅修改收件者位址
 # (適用順序為:sender->recipient->canonical)
 #
 # 5.3 偽裝主機名稱
 # 用於隱藏內部主機名稱
 # masquerade_domains = example.com
 #
 # 5.4 改變投遞位址
 # 拒收某人或某網域信件,並回覆一封告知
 # relocated_maps = hash:/etc/postfix/relocated
 # relocated 撰寫範例:
 # kdent@ora.com kdent@oreilly.com
 # @example.com oreilly.com
 #
 # 5.5 不明使用者
 # 拒絕不存在的本地帳戶/「不明使用者」(unknown user)
 #unknown_local_recipient_reject_code = 550
 unknown_local_recipient_reject_code = 450
 # 如果收信地址的人名部份,在任何對照表、別名表、系統帳戶都查不出來,
 # 這個人會被視為「不明使用者」(unknown user),系統會拒收。
 # 如果希望蒐集這類信件,使用下列設定,並指定集中收集的信箱
 # local_recipient_maps =
 # luser_relay = someuser
 # (上列第一個參數維持空白,第二個參數指定一個別名或實際帳戶)
 # 5.6 chroot
 # 最安全的設置方式是使用改變根目錄(chroot),但非常複雜;
 # postfix安裝時預設並未使用 chroot,記得去檢查 master.cf檔案,
 # 建議先取消 chroot,除非您真的很厲害。
 ##
 # 六、一些針對郵件限制的特殊設定
 # 限制一封信最多可以有幾位收信者,預設值是1000
 # smtpd_recipient_limit = 1000
 # 限制單封信件的體積上限,預設值為 10 MB(改為20MB)
 message_size_limit = 20480000
 ##
 # 七、別名檔資料庫設定(aliases)
 # 使用default_database_type參數決定資料庫格式,預設為 hash
 alias_maps = hash:/etc/postfix/aliases
 alias_database = hash:/etc/postfix/aliases
 # (安裝時隨附的別名檔範本,已經預設了一組慣例別名,最後都指向root,
 # 僅需要設置 root 別名,指向一個平常會收取信件的帳戶信箱即可)
 ##
 # 八、本地信件與信箱設置
 # 預設使用的信箱格式是mbox,下列的參數設置,如果結尾沒有"/",
 # 就表示是使用mbox;如果結尾跟著"/",就是使用 maildir格式。
 # (建議還是使用最通用的mbox,與其他程式的相容性最高)
 #
 # 所有本地收件人的名稱,都必須列在local_recipient_maps參數所指的表,
 # 預設值是指向Unix系統的密碼檔與別名表,通常不需要修改它。
 # local_recipient_maps = proxy:unix:passwd.byname $aliase_maps
 #
 # 信箱投遞作業
 #mail_spool_directory = /var/mail
 #mail_spool_directory = /var/spool/mail
 #
 # 可以要求 Postfix 將信件放在使用者的主目錄下
 home_mailbox = Mailbox
 #home_mailbox = Maildir/
 #
 # 用於將郵件投遞到信箱的外部命令(通常用來過濾防堵郵件)
 #mailbox_command = /usr/bin/procmail
 #mailbox_command = /some/where/procmail -a "$EXTENSION"
 # 用於執行信箱投遞作業的傳輸服務
 #mailbox_transport = lmtp:unix:/file/name
 #mailbox_transport = cyrus
 #
 ##
 # 八、啟用 SASL 驗證(服務於遠端、外部網域使用的認證機制)
 # 決定 Postfix SMTP server 是否要支援 SASL 驗證
 # smtpd_sasl_auth_enable = yes
 # 設定信件收件的限制規則
 # smtpd_recipient_restrictions = permit_mynetworks,
 # permit_sasl_authenticated, reject_unauth_destination
 # 確認已經通過認證的網域(這條有點疑問...)
 # smtpd_sasl_local_domain =
 # 限制某些登入的方式(拒絕匿名登入)
 # smtpd_sasl_security_options = noanonymous
 ##
 # 九、郵件代轉設定(交換站、入境、出境閘道)
 # (下列程序示範如何設定 gw.abc.com,讓它將郵件交給正確的內部伺服器)
 # (1)hr.abc.com, sales.abc.com的DNS MX均指向 gw.abc.com
 # (2)編輯gw的main.cf檔,將子網域列入 relay_domains 參數
 # relay_domains = hr.abc.com, sales.abc.com
 # (3)設定正確的傳輸表(transport map)
 # transport_maps = hash:/etc/postfix/transport
 # (4)編輯傳輸表(編完記得postmap一下)
 # hr.abc.com relay:[m1.abc.com]
 # sales.abc.com relay:[m2.abc.com]
 # (5)彙整m1,m2的合法信箱名單成一個受理名單,放在gw上
 # relay_recipient_maps = hash:/etc/postfix/relay_recipients
 # (怎麼收集、更新,是個大問題)
 # (6)postfix reload
 #
 # 設定出境郵件閘道(將外地郵件交給閘道系統代為遞送)
 # relayhost = $mydomain
 # relayhost = gateway.my.domain
 # relayhost = uucphost
 # relayhost = [an.ip.add.ress]
 #
 # 拒絕不知名用戶的代轉 REJECTING UNKNOWN RELAY USERS
 # (其實是將所有合法使用者放入一個名單中)
 #relay_recipient_maps = hash:/etc/postfix/relay_recipients
 ##
 # 十、設定 Open Relay Data Base
 # smtpd_client_restrictions = hash:/etc/postfix/access,
 # reject_rbl_client relays.ordb.org,
 # reject_rhsbl_client dsn.rfc-ignorant.org
 ##
 # 除錯管理
 debug_peer_level = 2
 #debug_peer_list = 127.0.0.1
 #debug_peer_list = some.domain
 # debugger_command =
 # PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
 # xxgdb $daemon_directory/$process_name $process_id & sleep 5
 # 如果並未安裝X-windows可以改用下列:
 debugger_command =
 PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
 echo where) gdb $daemon_directory/$process_name $process_id2>&1
 >$config_directory/$process_name.$process_id.log & sleep 5
 ##
 # 其他、安裝時的一些設置資訊
 #
 sendmail_path = /usr/sbin/sendmail.postfix
 newaliases_path = /usr/bin/newaliases.postfix
 mailq_path = /usr/bin/mailq.postfix
 setgid_group = postdrop
 manpage_directory = /usr/share/man
 sample_directory = /usr/share/doc/postfix-2.0.16/samples
 readme_directory = /usr/share/doc/postfix-2.0.16/README_FILES
 ##
==========================

Postfix 教學文檔

1. 引言

這篇文章的對像是希望設置一台基本郵件伺服器的初學者。擁有基本系統管理知識會有幫助,而能夠安裝軟件及編輯設定檔是必須的。這篇文章是針對 CentOS 5 所撰寫的,但亦應該適用於更早版本。其後版本也許會有差異。

一台郵件伺服器的設置可以有很多不同的實例和組合(多至無法在此盡錄),因此這篇文章為你作了一些基本的選擇,例如我們將會採用的軟件(postfix 及 dovecot)。其它選項則需要用戶更改,例如你的網絡位址及域名。虛擬網域或用戶等進階選項已超越了這篇文章的範疇,因而不會在這裡處理。

這篇文章採用 postfix 作為郵件傳輸代理(MTA),替代了 sendmail,CentOS 5預設的 MTA(postfix 在 CentOS 6 是預設的)。dovecot 是用來容讓用戶透過 imap 或 pop 協定來存取他們的郵件。我們會假設域名是 example.com,它應該由讀者更改,這可以是給一台正式郵件伺服器用的真實域名,或者只是供內部郵件伺服器用的虛構域名。我們假設實體的郵件伺服器(主機)是 mail.example.com,並且位於 192.168.0.1 這個私人 IP 位址(這應該按讀者的需要作出修改)。這台郵件伺服器將會透過標準的系統帳戶來提供郵件帳戶,而用戶將會利用他們的系統帳戶及密碼來存取他們的郵件。我們會假設有一位用戶名叫 John Smith,它擁有一個名為 john 的系統帳戶。

2. 安裝

我們首先要做的事情就是安裝所需的軟件。最簡單的做法就是在指令行上採用 yum:

yum install postfix dovecot system-switch-mail system-switch-mail-gnome

yum 應該會自動解決任何依賴性的需要。dovecot 依賴 mysql 及 perl,因此它們若未被安裝在系統上,現在很可能便會。

另外,我們可省略 ‘system-switch-mail’ 及 ‘system-switch-mail-gnome’ 的安裝和移除預設的 ‘sendmail’ MTA,這樣便會令 ‘postfix’ 成為我們系統的預設 MTA。

yum install postfix dovecot
yum remove sendmail

請留意 CentOS 5 的預設 MTA 是 sendmail。要是你沒有把 postfix 改為預設的 MTA,更新 postfix 時也許會把 sendmail 復原為預設的 MTA。

3. 設定

接下來我們需要設定郵件伺服器的各部份。

3.1. Postfix

postfix 的設定檔是儲存在 /etc/postfix 之內。postfix 的兩個主要設定檔是 master.cf 及 main.cf,雖然我們在這裡只會處理 main.cf。我們會首先在 main.cf 設定檔內作出添加及修改。以下內容需要被添加、編輯或解除註釋:

myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.0.0/24, 127.0.0.0/8
relay_domains =
home_mailbox = Maildir/

註:每行文字應該放置行首,而且前面不應有空格或定格字元。以空格或定格字元起首的行會被視為上一行的延續,假如上一行是註釋(#),接著的那一行亦會被同樣看待。此外,請避免採用內置的註釋。

現在讓我們檢視每個設定來理解我們剛才所做的事情:

myhostname:這是系統的主機名稱(例如:系統名叫 mail 或 mail.example.com)。

mydomain:這是郵件伺服器的域名(它可以是真實或虛構的域名)。

myorigin:這是本地郵寄的電郵發放及投遞時用的域名。

inet_interfaces:它設定 postfix 可以用來接收郵件的網絡介面。它們最少要包括 localhost 及 本地網域。

mydestination:這是可投遞的網域(換言之,這台伺服器是寄往這些網域的郵件的最終目的地)。

mynetworks:這是穫信任可以透過伺服器來發放或轉寄郵件的 IP 位址。當來自這些 IP 位址以外的用戶嘗試透過伺服器發放郵件時,便會被拒絕。

relay_domains:這是本系統會把郵件轉寄到的網域的清單。透過將它設定為空白,我們確保這台郵件伺服器不會成為未受信任的網絡的公開轉寄站。我們建議讀者在這裡測試他們的系統並非一個公開的轉寄站:http://www.abuse.net/relay.html

home_mailbox:它設定郵箱相對用戶根目錄的路徑,以及指定要採用的郵箱格式。postfix 同時支援 Maildir 及 mbox 格式,而我們鼓勵讀者閱讀有關每個格式的優點。然而,在這篇文章內我們選用了 Maildir 格式(一個尾隨的斜線代表 Maildir 格式。要指定 mbox 格式,讀者需要採用 home_mailbox = Mailbox)。

3.2. Dovecot

dovecot 的設定檔位於 /etc/dovecot.conf。以下內容需要被添加、編輯或解除註釋:

protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir
pop3_uidl_format = %08Xu%08Xv
# Required on x86_64 kernels
login_process_size = 64

讓我們再次檢視每個選項:

protocols:它指定可供用戶存取郵件的協定。dovecot 支援 imap(s) 及 pop3(s) ,你可應用部份或所有協定。

mail_location:它指定每位用戶的郵箱格式及位置。在這裡我們採用 maildir 格式,而且每位用戶的郵箱是放在 ~/Maildir。設定檔內已經提供了 mbox 格式的範例。

pop3_uidl_format:這是用來修正 Outlook 2003 透過 pop3 存取郵箱時出現的問題,因此加入它是很合理的(詳情請參閱設定檔內的備註)。

login_process_size:CentOS 5.1 的發行注記聲稱「當 x86_64 內核上的 dovecot 套件升級至 CentOS 5.1 後,/etc/dovecot.conf 內必須加入 login_process_size = 64 這個參數」。32 位元的安裝並不受影響,及不需要這個設定。

註:假如你透過 imap 或 pop3 與 dovecot 連線時出現任何問題,請查閱 dovecot.conf 設定檔內的 IMAP specific settings 及 POP3 specific settings 部份有關權宜之計。它所備有的選項多數是關乎舊電郵客戶端,以及針對微軟 Outlook 和 Outlook Express 的權宜之計。

關於 dovecot 及 C6 的備註:CentOS 6 把設定檔移至 /etc/dovecot/dovecot.conf。Dovecot 在不必對設定檔作出任何修改的情況下已經能啟動及自動聆聽 pop3(s) 和 imap(s) 埠上的連線。你很可能要作出修改來迎合你的環境。

3.3. 建立用戶的郵箱

接著我們須要在每位用戶的根目錄內建立一個郵箱及設定適的權限,因此以 john 這個用戶為例:

mkdir /home/john/Maildir
chown john:john /home/john/Maildir
chmod -R 700 /home/john/Maildir

註:假若以 root 身份建立用戶郵箱,你必須將目錄的擁有權賦予用戶。
3.4. 別名

我們快要完成了。我們已經為以 john 登入的 John Smith 用戶建立了一個郵件帳戶。他的電郵地址是 john@example.com 。然而,John 或許會希望透過 jsmith@example.com (或者其它別名)接收郵件。我們可以利用系統的別名檔案(postfix 預設使用 /etc/aliases)為 John 設定一個別名來達至這個目的。我們亦可以為其他用戶加入別名,譬如我們可以在 /etc/aliases 加入以下內容,將 root 的電郵轉寄給 John:

# 要接收 root 的電郵的人
root:           john
# 用戶別名
jsmith:         john
j.smith:        john

如果你在 postfix 運作時編輯別名檔案來為用戶設立新的別名,你必須執行 newaliases 這個指令來重建別名資料庫。

4. 啟動伺服器

現在我們已經準備好啟動新的郵件伺服器。首先我們要告訴我們的系統以 postfix 取代預設的 sendmail 作為 MTA。要這樣做,執行 system-switch-mail 這個指令並選擇 postfix 作為 MTA。這樣便會安裝 postfix 服務並將它設定在 runlevel 3、4、及 5 下自動啟動。然後我們亦須設定 dovecot 在 runlevel 3、4、及 5 下自動啟動,並啟動這兩個服務:

chkconfig –level 345 dovecot on
/etc/init.d/dovecot start
/etc/init.d/postfix start

此刻一切應該已在運作。你的郵件伺服器不論是發送及接收內部的電郵,或是發送對外的電郵都應該沒有問題。要在你的網域上接收外來的電郵,你必須在你的網域的 DNS 內設定 MX 記錄(最理想是透過你的 ISP 額外設定一個 PTR rDNS 將你的網域對映至你的 IP 位址)。切勿忘記在你的 Linux 防火牆上根據你所執行的服務開啟連接埠(SMTP 25;POP3 110;IMAP 143;IMAPS 993;POP3S 995),並在所有路由器上為這些埠啟用轉接功能。

如果你對 postfix 的 main.cf 設定檔作出任何改動,你可以選擇重新啟動 postfix 服務,或執行 postfix reload 這個指令來更新這些改動。

5. 總結

postfix 是一個非常強勁及多用途的郵件傳輸代理。在這篇文章內我們看見如何利用 postfix 及 dovecot 為一個網域設立一台應用系統帳戶的基本郵件伺服器。我們並未認真地探究 postfix 系統的性能,但盼望這裡提供了一個基礎讓新用戶能夠建立在其上。

=================================================

投稿信箱郵件測試:

http://htaes.tn.edu.tw/xoops2/htes_intro/papermail_test1.php

設定POSTFIX
dpkg-reconfigure postfix

設定imap與pop3
修改dovecot.conf:
sudo gedit /etc/dovecot/dovecot.conf
#listen = *, :: #前方的#拿掉啟用。
修改10-mail.conf
sudo gedit /etc/dovecot/conf.d/10-mail.conf
# mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
mail_location = maildir:~/Maildir
修改10-master.conf(我自己使用沒設定這個)
sudo gedit /etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
改完後儲存
重新啟動postfix和dovecot
sudo /etc/init.d/dovecot restart
sudo /etc/init.d/postfix restart

重設postfix:dpkg-reconfigure postfix
/etc/postfix/main.cf
myhostname = mail.htaes.tn.edu.tw
mynetwork = 163.26.205.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#home_mailbox = Maildir/
mydestination = htaes.tn.edu.tw, mail.htaes.tn.edu.tw,dns.htaes.tn.edu.tw
(參考:http://myip.tw/itsmw/index.php?title=UbuntuMail)

分類: 伺服器設定。這篇內容的永久連結