2008年1月9日 星期三

Postfix > master.cf的內容

前陣子為了要限制一部份公司裡的郵件帳號,不讓他們發送郵件到公司以外的地方,於是打算用smtpd_restriction_classes來區分受限制及不受限制的帳號,然後用master.cf設定,以下是一些關於master.cf的內容.

master.cf裡面主要是定義各種transport,每一個row代表一個transport, 有些row是以空白開頭的,那是代表同屬於上一row的transport的一些額外設定值.每個column代表transport的設定值,有以下幾個:
  1. service name: 代表名字,名字的命名方法受另一設定值type所影響.
  2. type: transport的類型, 分別有inet, unix及fifo.
      • inet代表network sockets,可以用IP:port為命名方式,可以只用port命名,代表在本機上,IP可以host取代, port也可以用/etc/services裡的服務取代.
      • unix代表Unix domain socket, 用於同一主機的兩個processes溝通用,需要用特別的file作溝通用,命名方式就像unix的file命名,但要去掉directory部份.
      • fifo,與unix類似.
  3. private: 是否只給Postfix自己使用, y代表是, n代表否, -代表default, default為y. inet的應該設定為n,否則其他processes不能使用.
  4. unpriv: unprivileged account能否使用, Postfix以mail_owner的設定值運行(default為postfix),該account只能做他基本的需求.unpriv為y代表unprivileged account可以執行, n代表要有root權限才能執行.
  5. chroot: 是否以chroot方式運行,chroot的位置定義在master.cf裡的queue_directory.
  6. wakeup: 有些service需要定時執行,如pickup, flush, qmgr.數字代表秒數, 後面加?代表有使用的才會被叫醒, 0代表永不叫醒, default為0, 一般只有少數需要被叫醒,通常Postfix都已設定好,無需自行設定.
  7. maxproc: 同時能調用的數目,0為無限, 如無指定則以main.cf中的default_process_limit為值,default為100.
  8. command: 實際執行的指令程式, 指令程式的位置應該要在main.cfdaemon_directory裡面,default為/usr/libexec/postfix. 可以加-v來log, -D來debug.
另外可以在每個transport下一row以空白開頭,然後加-o加override一些main.cf裡的設定,如:

smtp-quick unix - - n - - smtp
-o smtp_connect_timeout=5s

這樣就建立了一個smtp-quick transport, 所有設定值都會以main.cf的設定為準, 除了smtp_connect_timeout以外.

沒有留言 :