Postfix:MTA(郵件傳輸代理)軟件

一、postfix背景及優點

postfix的爲了替代傳統的sendmail,基於GPL協議開發的一款MTA(郵件傳輸代理)軟件。相較於sendmail,postfix在速度,性能,安全性和穩定性上都更勝一籌。

1. postfix是免費開源的:postfix想要作用的範圍是廣大的Internet用戶。試圖影響大多數的Internet上的電子郵件系統,因此它是免費的。

2. 更快:postfix在性能上大約比sendmail快三倍。一部執行postfix的臺式PC每天能夠收發上百萬封郵件。

3. 兼容性好:postfix是sendmail兼容的,從而使sendmail用戶能夠非常方便地遷移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。

4. 更健壯:postfix被設計成在重負荷之下仍然能夠正常工作。當系統執行超出了可用的內存或磁盤空間時,postfix會自己主動降低執行進程的數目。當處理的郵件數目增長時,postfix執行的進程不會跟着添加。

5. 更靈活:postfix是由超過一打的小程序組成的,每一個程序完畢特定的功能。你能夠通過配置文件設置每一個程序的執行參數。

6. 安全性:postfix具有多層防禦結構,能夠有效地抵禦惡意入侵者。如大多數的postfix程序能夠執行在較低的權限之下,不能夠通過網絡訪問安全性相關的本地投遞程序等等。

二、postfix的安裝使用

redhat6.0以上版本應該是默認集成了postfix服務的,假如沒有安裝的話,可以手動安裝。

rpm -qa | grep postifx   #查看是否安裝

yum install postfix    # 安裝

Postfix郵件的log位置是:/var/log/maillog

發送成功的話,會返回250和OK,也可以去自己的郵件客戶端查收。

三、配置

vi /etc/postfix/main.cf

myhostname = sample.test.com  ← 設置系統的主機名

mydomain = test.com  ← 設置域名(我們將讓此處設置將成爲E-mail地址“@”後面的部分)

myorigin = $mydomain  ← 將發信地址“@”後面的部分設置爲域名(非系統主機名)

inet_interfaces = all  ← 接受來自所有網絡的請求

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  ← 指定發給本地郵件的域名

home_mailbox = Maildir/  ← 指定用戶郵箱目錄

四、postfix組件結構

1、 postfix中隊列狀態共有五種,分別如下:

收件:incoming

活動:active

延遲:deferred

故障:corrupt

保留:hold

2、主要有以下組件:

master組件:主導郵件處理流程、其他組件的總管。配置文件:main.cf和master.cf。

qmgr組件:隊列管理器。各個postfix組件之間的合作依靠隊列交換郵件。

sendmail組件:服務器本機發送郵件。

postdrop組件:將郵件存入postfix隊列目錄下的maildrop/子目錄。

pickup組件:監視maildrop/子目錄,讀出新郵件,交給cleanup組件。

cleanup組件:補足遺漏的標頭字段。

trivial-rewrite組件:地址處理,改成標準格式。決定路由信息,包括傳輸方法、下一站以及收件人地址。 

smtpd組件:接收來自網絡的郵件,交給cleanup組件處理。

defer組件:郵件被延時時產生通知函。

bounce組件:郵件無法送達目的地時產生通知函。

dns組件:查找符合條件的郵件服務器。 

四、postfix起停及查看操作

     service postfix start

    service postfix status

    service postfix stop

五、配置文件詳解

       postfix的配置文件是main.cf

#別名數據庫(postalias/newaliases 命令生成)

alias_database = hash:/etc/postfix/aliases

#別名表,列出local mda 所使用的別名數據庫

alias_maps = hash:/etc/postfix/aliases

#退回的郵件重新投遞的最長時間

bounce_queue_lifetime = 1d

#支持非標準驗證規定的行爲

broken_sasl_auth_clients = yes

#postfix命令目錄

command_directory = /usr/sbin

#postfix配置文檔目錄

config_directory = /etc/postfix

#配置內容過濾 amavis

content_filter = smtp-amavis:[127.0.0.1]:10024

#postfix 的各個服務器程序目錄

daemon_directory = /usr/libexec/postfix

#

data_directory = /var/lib/postfix

#

debug_peer_level = 2

#重複郵件

enable_original_recipient = no

#

html_directory = /usr/share/doc/postfix-2.6.2-documentation/html

#

mail_name = Postfix – welcome mail.xmall.com

#以此參數指定的系統賬戶,作爲隊列文件的擁有者以及postfix daemon 進程的運行身份

mail_owner = postfix

#單封郵件大小限制,單位字節

mailbox_size_limit = 150242880

#

mailq_path = /usr/bin/mailq.postfi

#manpage 目錄

manpage_directory = /usr/share/man

#postfix在放棄投遞而返回不可投遞信息前,被延遲郵件再deferred郵件隊列中的生存時間

maximal_queue_lifetime = 1d

#限制單封郵件的最大長度,單位字節

message_size_limit = 150242880

#設置”本地網域”

mydestination = $mynetworks $myhostname

#完整主機名稱(主機名稱+網域名稱)

myhostname = mail.xmall.com

#郵件系統的網域名稱

mydomain = xmall.com

#附加到只含人名部分的,不完整郵件地址的網域名稱

myorigin

#列出可通過本郵件系統寄出郵件的網絡地址或ip地址

mynetworks = 127.0.0.1

#兼容sendmail,用於重建別名數據庫的newaliases程序路徑

newaliases_path = /usr/bin/newaliases.postfix

#postfix 隊列的主目錄

queue_directory = /var/spool/postfix

#

readme_directory = /usr/share/doc/postfix-2.6.2-documentation/readme

 

receive_override_options = no_address_mappings

#樣本配置文件目錄

sample_directory = /etc/postfix

#供腳本或命令行用來寄送郵件

sendmail_path = /usr/sbin/sendmail.postfix

#用來提交郵件或管理隊列的組標識符

setgid_group = postdrop

#

show_user_unknown_table_name = no

#smtp 問候信息

smtpd_banner = $myhostname ESMTP $mail_name

#當客戶端引發錯誤時,postfix 的初始等待時間

smtpd_error_sleep_time = 0s

#收件人限制條件

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, check_policy_service inet:127.0.0.1:10030

#啓動sasl 驗證

smtpd_sasl_auth_enable = yes

#

smtpd_sasl_local_domain = $myhostname

#指定密碼驗證機制(除noanonymous) 所有可用機制

smtpd_sasl_security_options = noanonymous

#設定寄件地址與sasl登錄身份的對應關係,只能使用本域地址避免使用其他寄件地址!

smtpd_sender_login_maps = mysql:/etc/postfix/mysql_virtual_sender_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_maps.cf

#發件人限制條件

smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, reject_authenticated_sender_login_mismatch, reject_unauthenticated_sender_login_mismatch

#

unknown_local_recipient_reject_code = 550

#指向含有“虛擬別名地址”與“實際收件地址”對應關係的查詢表

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

#虛擬網域查詢表

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

#虛擬郵箱查詢表

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

#用於投遞郵件到虛擬郵箱地址的默認傳輸服務(虛擬mda)

 

六、收發郵件處理過程

整個處理流程分爲三個階段:接收郵件、將郵件排入隊列、遞送郵件。每個階段由一組獨立的Postfix組件負責。當一封郵件被收下並排入隊列之後,隊列管理器(Queue Manager)會啓動適當的MDA,將郵件送到終點。

七、postfix命令行工具

postalias:創建或查詢別名數據庫。

postcat:顯示出隊列文件的內容,讓管理員可觀察滯留在隊列裏的郵件內容。

postconf:顯示或改變postfix參數。

postdrop:將郵件放回到maildrop目錄,由postfix重新進行投遞操作。

postfix:啓動或停止postfix系統,或重新讀取配置文件。

postkick:對特定postfix服務發出請求。

postlock:鎖定特定文件,確保能夠獨佔訪問。

postlog:將特定的信息記錄到系統日誌文件中。

postmap:創建查詢表的DB數據庫或查詢查詢表內容。

postqueue:讓一般的用戶能夠有限度地訪問postfix隊列。

postsuper:供管理員訪問postfix隊列。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章