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