但願人長久,千里共嬋娟 freebsd-taiwan-doc@freebsd.sinica.edu.tw
04 Apr 2001 08:58:31 GMT
--------------------------------------------------------------------------------
※ 本文轉錄自 [Daily] 看板
作者: DarkKiller (但願人長久,千里共嬋娟) 看板: Daily
標題: Re: [doc] 在 FreeBSD 如何使用 postfix
時間: Wed Apr 4 16:57:32 2001
參考文件http://www.postfix.org/usr/local/etc/postfix/sample-*
1. 首先,我們先利用 tarball 安裝 postfix:
cd /usr/ports/mail/postfix
make all install clean
他所問你的問題請選 Yes,讓他開 postfix 要用的帳號。
2. 安裝好以後,到 /usr/local/etc/postfix 下面修改 main.cf 的下列設定:
# 你的 hostname
myhostname = infomath.math.nctu.edu.tw
# 你的 domain
mydomain = math.nctu.edu.tw
# 當你這台機器有很多 domain name 要收的時候,你可以用這種這個設定把
# 這些 domain name 放到同一個檔案裡面,檔案的內容就是每一行放一個
# hostname。
mydestination = /usr/local/etc/postfix/local-host-names
# 關掉你的 vrfy 指令。
#
# 除非你知道這個東西是做什麼的,否則強烈建議你設定上去!
disable_vrfy_command = yes
# 你允許 relay 的 domains,通常是被設為 MX 才要設定上去。格式跟
# local-host-names 相同,都是一行一個 domain。
relay_domains = /usr/local/etc/postfix/relay-domains
# 這是設定 global 的 aliases,你可以把以前放在 /etc/mail/aliases 的檔
# 案直接 copy 過來以後,跑 postalias /usr/local/etc/postfix/aliases。
alias_maps = hash:/usr/local/etc/postfix/aliases
# 以前 sendmail 用 /etc/mail/access 來控制 discard/reject/relay 以及其
# 他的設定。在 postfix 裡面,我們拆開對 HELO/MAIL FROM/RCPT TO/... 等等
# 作處理,我們僅介紹 relay 所需要用到對 RCPT TO 的控制,把下面這行:
#
# smtpd_recipient_restrictions = permit_mynetworks,check_relay_domains
#
# 修改成:(不斷行)
#
smtpd_recipient_restrictions = permit_mynetworks,
hash:/usr/local/etc/postfix/rcptto-access,check_relay_domains,
#
# 然後跑 postmap hash:/usr/local/etc/postfix/rcptto-access 即可。
#
# 更進階的用法請參考 /usr/loca/etc/postfix/sample-smtpd.cf 裡面的說明。
3. 現在,要把 postfix 放到 /usr/local/etc/rc.d 裡面讓 postfix 在開機的時
候跑起來,另外把正在跑 sendmail kill 掉,以及在 /etc/rc.conf 把 sendmail
設為不啟動。
所以,到 /usr/local/etc/rc.d 建立一個檔案,叫做 postfix.sh:
#!/bin/sh
/usr/local/sbin/postfix start
[請注意] 現在的 startup script 都應該要支援 start、stop,這個地方這樣
寫是並不支援 stop 的部分,這是因為我懶惰 :p
另外在 /etc/rc.conf 把 sendmail 的預設值設為關閉:
sendmail_enable="NO"
然後把現在正在跑的 sendmail 砍掉:
killall -9 sendmail
把你的 postfix 跑起來:
/usr/local/etc/rc.d/postfix.sh start
4. 先從自己機器寄一封信到你這台機器,看看可不可以送到。如果可以的話,從
別台寄到你自己的機器看看! 有問題的話看看 /var/log/maillog 裡面有什麼
可以提供你自己 debug 的方法,找到的話,post 到 386BSD 板跟大家分享 :)
5. 接下來,我們把 local mailer 也改成 postfix 附的 sendmail:
把 /etc/mail/mailer.conf 裡面的四項設定改成:
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
然後用自己機器寄信給自己看看,如果成功的話,寄到別台機器的帳號看看,
相同的,如果你遇到困難的話,你可以看看 /var/log/maillog 裡面的東西去
猜測問題的出處 :)
6. 接下來是說 BBS 的部分了,對於 BBS 而言,最主要就是 bbsmail 以及
mailpost 要透過 sendmail (以前) 或是 postfix (現在) 把信件轉到 BBS 裡。
所以我們的做法是使用 canonical 把 username.bbs@bbs.twbbs.org 轉成
username@bbsmail 以後,再用 transport 把要給 bbsmail 的文章都丟給
BBS 的 bbsmail 處理。
而 mailpost 除了類似的方式以外,你也可以直接在 BBS 的 home directory
裡面的 .forward 設定:
"| exec /home/bbs/bin/mailpost"
這樣的話下面的 mailpost 的部分你就不需要設定了。
我們先在 main.cf 裡面新增兩項設定:
# canonical 的部分,我們要用到 Regular Expression:
canonical_maps = regexp:/usr/local/etc/postfix/canonical
# transport 的部分,我們用 hash 來處理:
transport_maps = hash:/usr/local/etc/postfix/transport
我們先新增 /usr/local/etc/postfix/canonical:
/^bbs@/ $1@mailpost
/^(.+)\.bbs@/ $1@bbsmail
然後再新增 /usr/local/etc/postfix/transport:
bbsmail bbsmail:
mailpost mailpost:
新增完以後,跑下面的命令讓它產生相關的設定:
postmap hash:/usr/local/etc/postfix/transport
然後我們要告訴 postfix,bbsmail 以及 mailpost 這兩個 mailer 到底是
那兩隻程式負責。
修改 /usr/local/etc/postfix/master.cf,加到最後面:
# 請注意,這是沒有換行的,請自行接上:(用 tab)
bbsmail unix - n n - - pipe
flags=R user=bbs argv=/home/bbs/bin/bbsmail $mailbox
# 這也是沒有換行的,也是用 tab 接上:
mailpost unix - n n - - pipe
flags=R user=bbs argv=/home/bbs/bin/mailpost
設定改完以後,請輸入下列指令,讓 postfix 去重新讀入設定:
postfix reload
--
交大校園網路策進會 NCTUCCCA 林嘉軒
Gea-Suan Lin
--
※ Origin: 小鹿鹿
沒有留言:
張貼留言