詳解Suse Postfix配置解法
隨著社會的進步,科技的發展,操作系統越來越受到廣大用戶的關注,而Suse也越來越受到重視。你是否了解怎樣完成Suse Postfix配置呢?今天我們就講講Suse Postfix配置學習問題。Postfix默認值
Postfix采用默認值啟動時有2個重要特性:
1.只在127.0.0.1的port25上Listen(inet_interfaces=127.0.0.1)也就是不管是MUA或MTA要寄信給postfix,postfix一概不接受。這樣除非是登入到主機,利用mail指令寄信外,便無法寄信。
2.允許一個網段的主機轉發信件/Reply(mynetwork_style=subnet)。事務上,通常利用Postfix中的mynetworks來限制允許Relay的主機范圍。
因為Suse默認是利用YaST來設定Postfix,如想自己手動設置postfix,需修改/etc/sysocnfig/mail中
MAIL_CREATE_CONFIG="yes"-->no
SMTPD_LISTEN_REMOTE="no"-->yes
過濾掉main.cf中的說明內容,可以使用這條命令:#grep'^[^#]'/etc/postfix/main.cf
建議是在過濾前備份原文件,文件中的說明是非常有用的,唯一的缺點是E文的。
myhostname
此為mailserver的主機名,如果安裝時有設置或者使用YaST修改過主機名,此選項默認會被設置,當然,檢查下最好了。
例如:myhostname=mailtest.tm
mydomain
此為設置域名,在main.cf中沒有這個設定值,其默認值就是你設置主機名時候的域名名稱。
例如:mydomain=mailtest.tm
mail:#postconfmydomain
mydomain=mailtest.tm
inet_interface(解除只在127.0.0.1的port25上監聽的限制)
默認值為127.0.0.1,會造成外部MUA,MTA無法跟postfix交互,建議更改為all。也可以使用postconf指令來修改,如下:
mail:~#postconfinet_interfaces
inet_interfaces=127.0.0.1::1<-127.0.0.1
mail:~#postconf-e'inet_interfaces=all'<-利用postconf指令修改
mail:~#postconfinet_interfaces
inet_interfaces=all
mynetworks_style設定允許relay郵件的具體方式,默認值為:subnet,主要有以下3種方式:
class:會根據服務器設置的IP地址屬于A/B/C中的哪一類地址,來決定允許relay的服務器
例如mailserver地址為220.11.35.2,則允許所有220.x.x.x的IP都可以利用你的mailserver來做郵件轉發relay,這個是非常危險的,你的mailserver非常容易成為垃圾郵件的載體,強烈建議,不使用class方式
subnet:根據mailserver的IP及netmask計算,只允許同一個網段的主機利用你的mailserver來relay郵件。
host:如設定為host,則只允許localhost可以relay郵件
mynetworks(允許IP/netmask及本機可以realy郵件)
指定可以使用此mailserver來relay郵件的IP/netmask。如果mynetwoks跟mynetworks_style同時設置,則myneworks會覆蓋mynetworks_style的值。
myorigin
當使用mail命令來收發郵件時,如果沒有指定@mailtest.tm,postfix會自動根據myorigin中的設置,來自動補齊地址。
mydestination
此參數非常重要,postfix默認使用此參數來判斷收到的信件是否為本地信件,其默認值應該包含$myhostname
使用postconf命令時,后面的參數,請用單引號',勿用雙引號"。
Suse使用qpopper作為pop3工具
沒有的話,自己安裝下,安裝完成后,使用如下命令進行檢查及啟動服務,qpopper是由xinetd服務來管理的,所以重啟是需要啟動xinetd,當然首先是要確定服務是on的
#chkconfig--listqpopper
#chkconfigqpopperon
#rcxinetdrestart
mailserver的DNS,默認使用/etc/resolv.conf中設置的dns服務器來做解析,所以,完全沒有必要在mailserver上再架設DNSserver。當然,你有興趣搞定,那是perfect。筆者嘗試過powerdns+dnscache,比傳統的bind好用,支持web維護,后話了。。。,有空也整理這塊,^_^。
使用Postfix+SASL來完成SMTP的SMTP-AUTH功能
Postfix本身并無帳號認證機制,故使用系統SASLservice來做這塊,工作原理是,當postfix發現有人要relay郵件時,會將帳號及密碼信息傳給SASL(saslauthddaemon),SASL會根據自己的驗證方式,比如對/etc/passwd及/etc/shadow來決定是否可以relay郵件。
修改mynetworks為127.0.0.1可以relay郵件,所以此時當MUA嘗試將郵件郵寄至另一臺mailserver時,會出現rlayaccessdenied的錯誤提示
mail:~#postconf-e'mynetworks=127.0.0.1'
mail:~#postconfmynetworks
mynetworks=127.0.0.1
mail:~#rcpostfixrestart
Shuttingdownmailservice(Postfix)done
Startingmailservice(Postfix)done
修改/etc/postfix/main.cf
mail:~#vi/etc/postfix/main.cf
smtpd_sasl_auth_enable=yes
smtpd_sasl_security_options=noanonymous
broken_sasl_auth_clients=yes
smtpd_recipient_restrictions=permit_sasl_authenticated,
permit_mynetworks,reject_unauth_destination
(注意,在main.cf中,縮進是意味著上一行的延續,可以看成是同一行)
利用postconf方式如下:
postconf-e'smtpd_sasl_auth_enable=yes'
postconf-e'smtpd_sasl_security_options=noanonymous'
postconf-e'broken_sasl_auth_clients=yes'
postconf-e
'smtpd_recipient_restrictions=permit_sasl_authenticated,
permit_mynetworks,reject_unauth_destination'
上述參數的解釋如下:
smtpd_sasl_auth_enable:開啟mailclient啟動sasl認證,默認此項是不開啟的
smtpd_sasl_security_options:取消匿名登陸方式
broken_sasl_auth_clients:開啟此項的目的是讓不支持RFC2554的smtpclient也可以跟postfix做交互。
smtpd_recipient_restrictions:設定郵件中有關收件人部分的限制,(rcptto:<收件人e-mail>),應用規則是[第一條符合后,便不會往下繼續檢查]。
permit_sasl_authenticated:允許使用sasl認證方式的使用者relay郵件
permit_mynetworks:允許mynetworks中設置的用戶relay郵件
reject_unauth_destination:阻止@xxx.xxx,不在my_destination中的地址,退回他們的郵件。
修改系統sasl的相關設置vi/etc/sysconfig/saslauthd
##Path:System/Security/SASL
##Type:list(getpwent,kerberos5,pam,rimap,shadow,ldap)
##Default:pam
##ServiceRestart:saslauthd
#
#Authenticationmechanismtousebysaslauthd.
#Seeman8saslauthdforavailablemechanisms.
#
SASLAUTHD_AUTHMECH=pam
看這里是否為pam,其實默認就是使用pam的,主要檢查下
檢查,啟動saslauthdservice
#chkconfig--listsaslauthd
#rcsaslauthdstart
重新啟動postfix
#rcpostfixrestart
部門郵件,郵件列表功能/etc/aliases,其語法如下:
mail帳號:真實帳號1,真實帳號2,真實帳號3
mail帳號::include:郵寄人名單
例如:
vi/etc/aliases
mis:ray,fly,edison
vi/etc/aliases
allusers::include:/etc/allusers
前者直接寫明帳號,適合人員少的情況;后者使用了一個文件,適合大量人員的情況
重新生成aliases.db,執行
#newaliases
#ls-l/etc/aliases
-rw-r--r--1rootroot2579Jun162006aliases
-rw-r--r--1rootroot12288Dec2302:54aliases.db
同時,利用/etc/aliases文件,還能實現郵件的簡單轉發功能
#vi/etc/aliases
ray:ray,fly(這里郵寄給ray的信件會同時轉發給ray和fly)
#newaliases
利用此文件有一個明顯的缺點:只有root用戶有操作權限,普通用戶無法直接操作,提供如下方法,可以使普通用戶也有權限。
以普通用戶登陸后,創建~/.forward文件
\ray,fly
或者簡化為
ray,fly
利用~/.forward還可以使用vacation命令來做假期郵件自動回復
在用戶的家目錄,編譯.forward文件
ray@mailtest:~>vi.forward
\neo,"|/usr/bin/vacationneo"
編寫內容文件vi~/.vacation.msg
Subject:ray1/10~1/22休假
7/10~7/20我正在休假中
有關你的Mail"$SUBJECT"
我回來,會盡快處理
初始化vacation庫,使用如下命令
ray@mailtest:~>vacation-i
取消自動回復,只需要刪除或重新命名.forward文件即可。
Postfix的轉錄機制(always_bcc)
Postfix可以設置把所有收到和寄出的郵件,都轉發到某個帳號里,設定非常簡單
mailtest:~#postconfalways_bcc
always_bcc=<-默認值為空
mail:~#postconf-e'always_bcc=ray@mailtest.tm'
此功能適合對信息安全要求較高的公司,或者滿足保留公司郵件的需要,很多外國公司,按照他們的法律,所有的郵件都要保存7年,比如美國。通過本文的介紹,我想大家也逐漸熟悉了Suse Postfix配置,希望本文對你有所幫助。
【編輯推薦】