回文章列表
作者kevinblue.bbs@nightless.twbbs.org (凱文藍) 看板: itoc
標題[筆記] bbs 用 postfix 收信 v0.2
時間城區夜未眠 (2007/12/20 Thu 21:57:24)
我是看 DK 大很久以前的文章設定的,因為 postfix 的版本改了跟以前的設定有差別
所以筆記一下免的忘記 囧

出錯時 postconf -n, postconf -d 很好用 :D
若需要測試你的 regualr expresion 可以使用
    postmap -q "TEST-STRING-HERE" pcre:/path/to/prec/file
    postmap -q "TEST-STRING-HERE" regexp:/path/to/regexp/file

本篇筆記安裝之相關環境:
FreeBSD 7.0beta4
Postfix v2.5.20071212
maple-itoc 原版的 bbsmail, brdmail, mailpost

官網的 document 寫的也很詳細!
DK 大的文件中的設定有點舊了,雖然 postfix 2.0+ 都有一定程度上的相容
但是還是用新版的選項設定會比較好
建議先看 DK 大的文件再看這篇!

如果有需要改進的地方歡迎提出! :D

reference
http://www.postfix.org/postconf.5.html#virtual_alias_maps
http://postfix.wiki.xs4all.nl/index.php?title=Main_Page
http://www.postfix.org/BASIC_CONFIGURATION_README.html

---------------------------from 鳥哥-------------------------------
# 幫助 Client 發送信件,也就是 Relay 的功能開放的需求項目:
  在開放哪些項目之後,你的 postfix 主機才會幫助『信任』的 Client 端 Relay 呢?
   1. 當 Client 來自信任的網域,也就是 IP 符合 $mynetworks 的設定值時�
   2. 當 Client 來自信任的機器,也就是主機名稱符合 $relay_domains 的設定項目時
   3. 當 Client 來自不信任的網域,但是去的目的地主機端符合 $relay_domains 的設
      定時。
當符合上面三點的任何一點時,那麼 postfix 將對該信件進行 relay 的動作喔!

# 收信程序:在哪些情況之下,我們的 postfix 會將該封信件收下來呢?
   1. 收件者主機名稱符合 $inet_interfaces 的設定;
   2. 收件者主機名稱符合 $mydestination 的設定;
   3. 收件者主機名稱符合 $virtual_maps 的設定。
符合上面三點的任何一項時,那麼該封信件就會被我們的 postfix 收下來!
------------------------end from 鳥哥-------------------------------

如果有需要看 manpage 參考參數的話可以 man 5 postconf 就可以看所有參數

1.  先安裝 mail/postfix-current
    然後讓 posts 新增 postfix 這個帳號
2.  vi /usr/local/etc/postfix/main.cf
    加上以下幾列
    myhostname = bbs.cis.scu.edu.tw
    mydomain = cis.scu.edu.tw
    inet_interfaces = $myhostname, nightless.twbbs.org
    myorigin = $myhostname

    # 當你這台機器有很多 domain name 要收的時候,你可以用這種這個設定把
    # 這些 domain name 放到同一個檔案裡面,檔案的內容就是每一行放一個
    # hostname。
    mydestination = /usr/local/etc/postfix/local-host-names
>        # 因為夜未眠有 2 個 domain,讓這兩個 domain 的信都可以收
>        %> cat local-host-names
>        bbs.scu.edu.tw
>        nightless.twbbs.org

    # 關掉你的 vrfy 指令。
    # 除非你知道這個東西是做什麼的,否則強烈建議你設定上去!
    # Disable the SMTP VRFY command.
    # This stops some techniques used to harvest email addresses.
    disable_vrfy_command = yes

>   不設定 mynetworks_style,直接設定 mynetworks
    mynetworks = /usr/local/etc/postfix/mynetworks
>       %> cat mynetworks
>       127.0.0.1
>       163.14.73.4
    # 你允許 relay 的 domains,通常是被設為 MX 才要設定上去。格式跟
    # local-host-names 相同,都是一行一個 domain。
    # 這個很重要,因為是要用 postfix 把信轉給 bbsmail brdmail mailpost
    # 所以要設定成自己的 domain,否則在 maillog 會有 Relay Access Deny 
    relay_domains = /usr/local/etc/postfix/relay-domains
>       %> cat relay-domains
>       nightless.twbbs.org
>       bbs.cis.scu.edu.tw
    # 全部接成一行不能用 "\" Orz
    # 處理順序是先去 client-access 這個檔案看有沒有符合 regular expression 的
    # domain,如果沒有就繼續看 reject_unknow_client,
    # 如果也沒有就是一律 reject
    # 有問題 man 5 postconf
smtpd_client_restrictions =  permit_mynetworks,
           check_client_access regexp:/usr/local/etc/postfix/client-access,
           reject_unknown_client_hostname,
           reject
>       %> cat client-access
>       # 註解用 '#' 開頭
>       # 用 '/blah$/' 把 regular expression 包起來
>       # OK 表示允許這個 request,不再對 smtpd_client_restrictions 後面所列的
>       # 條件做檢查了。
>       # http://www.postfix.org/regexp_table.5.html
>       /new\.ptt\.cc?$/             OK
>       /\.com?$/                    554   no mail relay here
>       /\.com\.tw?$/                554   no mail relay here
>       /\.hinet\.net?$/             554   no hinet mail relay here

    # 加上 check_recipient_access 不要讓廣告信寄到非 bbs 信箱/看板
    # 如果你不需要就拿掉 check_recipient_access 吧 :D
smtpd_recipient_restrictions = permit_mynetworks,
          check_recipient_access /usr/local/etc/postfix/local-usr-deny,
          reject #一律 reject 不用管了 :p

>       %> cat local-usr-deny
>       #只要不是寄到 bbsmail brdmail mailpost 的都 reject
>       /^(.+)\.bbs@nightless\.twbbs\.org?$/      OK
>       /^(.+)\.brd@nightless\.twbbs\.org?$/      OK
>       /^(.+)\.bbs@bbs\.cis\.scu\.edu\.tw?$/     OK
>       /^(.+)\.brd@bbs\.cis\.scu\.edu\.tw?$/     OK
>       #非 bbs 帳號之 mailbox
>       /^(.+)@nightless\.twbbs\.org?$/           REJECT
>       /^(.+)@bbs\.cis\.scu\.edu\.tw?$/          REJECT

# 原本 postfix2.0+ 之後 local_recipient_maps 變成強制選項
# http://www.postfix.org/LOCAL_RECIPIENT_README.html#format
# 不設定自動使用預設值,官網強烈建議不要 disable 免的變成病毒轉信中心 :p
# 預設值: local_recipient_maps = proxy:unix:passwd.byname $alias_maps
# 詳細說明就在 main.cf 中

--------------------這邊開始轉給 *mail 以及 mailpost 處理---------------
    # virtual 的部分,我們用 pcre 來處理 :
    # virtual_maps 在 postfix2.0+ 之後被分割成
    # virtual_alias_domains 以及 virtual_alias_maps
    # 設定完之後跑 postmap /usr/local/etc/postfix/virtual 更新
    # http://www.postfix.org/postconf.5.html#virtual_alias_domains
    virtual_alias_maps = /usr/local/etc/postfix/virtual

    # transport 的部分,我們用 hash 來處理:
    transport_maps = hash:/usr/local/etc/postfix/transport

    # 如果你不想執行 postalias hash:/usr/local/etc/postfix/aliases 這麼長串
    # 的指令,你可以設定下面這行,要設的跟 alias_maps 一樣。
    # 設定完以後只要用 newaliases 變可以更新,詳細說明就在本身的檔案
    # 設定 alias,用預設值,如果不確定 alias dir 請 postconf -d | grep alias
    # http://www.postfix.org/postconf.5.html#alias_maps
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases

>       %> cat virtual
>       /^bbs(reg)?@nightless\.twbbs\.org(\.tw)?$/ bbs@mailpost.
>       /^(.+)\.bbs@nightless\.twbbs\.org(\.tw)?$/ $1@bbsmail.
>       /^(.+)\.brd@nightless\.twbbs\.org(\.tw)?$/ $1@brdmail.
>       /^bbs(reg)?@bbs\.cis\.scu\.edu\.tw?$/ bbs@mailpost.
>       /^(.+)\.bbs@bbs\.cis\.scu\.edu\.tw?$/ $1@bbsmail.
>       /^(.+)\.brd@bbs\.cis\.scu\.edu\.tw?$/ $1@brdmail.

>       %> cat transport
>       #新增完以後,跑下面的命令讓它產生相關的設定:
>       #postmap hash:/usr/local/etc/postfix/transport
>       bbsmail bbsmail:
>       brdmail brdmail:
>       mailpost mailpost:

最後加下面指令到 /usr/local/etc/postfix/master.cf
%> cat master.cf
#無斷行
bbsmail   unix  -       n       n       -       -       pipe flags=FR
user=bbs argv=/home/bbs/bin/bbsmail $mailbox
brdmail   unix  -       n       n       -       -       pipe flags=FR
user=bbs argv=/home/bbs/bin/brdmail $mailbox
mailpost  unix  -       n       n       -       -       pipe flags=FR
user=bbs argv=/home/bbs/bin/mailpost

以上大概就是這樣
我們站現在就不太怕奇奇怪怪的 relay 了 Orz


--
i◣�i ██ █i ██    ██ ██ ██   *   .  '            ▃▃  
   ██    f ██  █     █▆ █▆ █▆ '   *    .    ::    : ::   : :  
   █◥  ██ █i  █  █▆ █▆ ▆█ ▆█ 城區夜未眠   :    :: ::   : ::  
   Origin:東吳資科城區夜未眠(nightless.twbbs.org)▊▋▎ [FROM:140.109.23.36]
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻