Linux下巧妙使用邮件服务器之postfix(认证+web)
簡介
一. postfix郵件服務的安裝
Red Hat Enterprise Linux 提供了sendmail和postfix兩種STMP郵件服務軟
件,讓用戶可以隨意地選擇其中一種!不過,默認情況下安裝程序已將sendmail
安裝到系統(tǒng)中了,如果要使用postfix,就必須先將sendmail服務停止,然后再安
裝postfix服務軟件。具體操作步驟如下:
① 檢查sendmail服務是否已啟動
netstat -nutlp | grep :25
② 關閉sendmail服務及開機時自啟動
/etc/rc.d/init.d/sendmail stop
chkconfig sendmail off
③ 安裝postfix服務
將Red Hat Enterprise Linux 5的第3張安裝盤放入光驅,加載光驅后在光盤的
Server目錄下找到postfix的RPM安裝包文件postfix-2.3.3-2.i386.rpm,然后使用
下面的命令安裝:
rpm -ivh /mnt/Server/postfix-2.3.3-2.i386.rpm
二、postfix服務的基本配置
1.設置運行postfix服務的郵件主機的主機名、域名
myhostname = mail.gdvcp.net
mydomain = gdvcp.net
2.設置由本機寄出的郵件所使用的域名或主機名稱
myorigin = $mydomain
3.設置postfix服務監(jiān)聽的網(wǎng)絡接口
inet_interfaces = all
4.設置可接收郵件的主機名稱或域名
mydestination = $mydomain, $myhostname
5.設置可轉發(fā)(Relay)哪些網(wǎng)絡的郵件
mynetworks = 192.168.16.0/24
6.設置可轉發(fā)哪些網(wǎng)域的郵件
relay_domains = gdvcp.net
三、虛擬別名域的配置
① 編輯postfix主配置文件/etc/postfix/main.cf,進行如下定義:
virtual_alias_domains = dzxx.cn,example.com
virtual_alias_maps = hash:/etc/postfix/virtual
② 編輯配置文件/etc/postfix/virtual,進行如下定義:
@dzxx.cn @gdvcp.net
admin@example.com lbt
st0321@example.com st0321001,st0321002
daliu@example.com lbt,liu6812@163.com
③ 在修改配置文件main.cf和virtual后,要使更改立即生效,應分別執(zhí)行/usr/sbin目錄下以下的兩條命令:
postmap /etc/postfix/virtual
postfix reload
此外,要使它能在單位內部網(wǎng)絡中更好地
轉發(fā)郵件,還必須進行DNS設置。
rhel5.gdvcp.net. IN A???????? 192.168.16.177
mail.gdvcp.net. IN CNAME?? rhel5.gdvcp.net.
gdvcp.net.?????? IN MX 10???? mail.gdvcp.net.
四、用戶別名的配置
① 打開postfix主配置文件/etc/postfix/main.cf,應確認文件中包含以下兩條默認語句:
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
② 編輯配置文件/etc/aliases,進行如下定義:
st0322: st0322001,st0322002,st0322003,st0322004
st0323: :include: /etc/mail/st0323
jcz01: jczliuming
lm01: jczliuming,liuming86@163.com
③ 在修改配置文件main.cf和aliases后,要使更改立即生效,應分別執(zhí)行/usr/sbin目錄下以下的兩條命令:
postalias /etc/aliases
postfix reload
五、SMTP認證的配置
Cyrus SASL是Cyrus Simple Authentication and Security Layer的簡寫,它最
大的功能是為應用程序提供了認證函數(shù)庫。應用程序可以通過函數(shù)庫所提供的功
能定義認證方式,并讓SASL通過與郵件服務器主機的溝通從而提供認證的功能。
1.Cyrus-SASL認證包的安裝
默認情況下,Red Hat Enterprise Linux安裝程序會將Cyrus-SASL認證包,
可使用下面的命令檢查系統(tǒng)是否已經安裝了Cyrus-SASL認證包或查看已經安裝
了何種版本:
rpm -qa | grep sasl
如果系統(tǒng)還沒有安裝Cyrus-SASL認證包,應將Red Hat Enterprise Linux 5第
1、2和3張安裝光盤分別放入光驅,加載光驅后在光盤的Server目錄下找到與
Cyrus-SASL認證包相關的RPM包文件,然后分別使用rpm -ivh命令安裝。例
如,要安裝第1張光盤上的cyrus-sasl-2.1.22-4.i386.rpm包文件,可使用下面的
命令:
rpm -ivh /mnt/Server/cyrus-sasl-2.1.22-4.i386.rpm
2.Cyrus-SASL V2的密碼驗證機制
默認情況下,Cyrus-SASL V2版使用saslauthd這個守護進程進行密碼認證,而密碼
認證的方法有多種,使用下面的命令可查看當前系統(tǒng)中的Cyrus-SASL V2所支持的密碼
驗證機制:
saslauthd –v
當前可使用的密碼驗證方法有getwent、kerberos5、pam、rimap、shadow和ldap。
為簡單起見,這里準備采用shadow驗證方法,也就是直接用/etc/shadow文件中的用戶賬
戶及密碼進行驗證,因此,在配置文件/etc/sysconfig/saslauthd中,修改當前系統(tǒng)所采用
的密碼驗證機制為shadow,即:
MECH=shadow
3.測試Cyrus-SASL V2的認證功能
由于Cyrus-SASL V2版默認使用saslauthd這個守護進程進行密碼認
證,因此,需要使用下面的命令來查看saslauthd進程是否已經運行:
ps aux | grep saslauthd
如果沒有發(fā)現(xiàn)saslauthd進程,則可用下面的命令啟動該進程并設置它
開機自啟動:
/etc/init.d/saslauthd start
chkconfig saslauthd on
然后,可用下面的命令測試saslauthd進程的認證功能:
/usr/sbin/testsaslauthd –u lbt –p ‘123456’
4.設置postfix啟用smtp認證
main.cf文件中有關smtp認證的設置部分
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ''
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
5.測試postfix是否啟用了smtp認證
采用telnet命令連接到postfix服務器端口25來進行測試,測試過程
如下圖所示。
啟動和停止postfix服務
1.啟動postfix服務
/etc/init.d/postfix start
2.停止postfix服務
/etc/init.d/postfix stop
3.重新啟動postfix服務
/etc/init.d/postfix restart
4.重新載入postfix主配置文件
/etc/init.d/postfix reload
5.自動啟動postfix服務
如果需要讓postfix服務隨系統(tǒng)啟動而自動加載,可以執(zhí)行“ntsysv”
命令啟動服務配置程序,找到“postfix”服務,然后在其前面加上“*” 星
號,確定即可。
六、POP和IMAP郵件服務的實現(xiàn)
postfix服務只是一個MTA(郵件傳輸代理),它只提供
SMTP服務,也就是只提供郵件的轉發(fā)及本地的分發(fā)功能。
要實現(xiàn)郵件的異地接收,還必須安裝POP或IMAP服務。通
常情況下,都是將STMP服務和POP或IMAP服務安裝在同一
臺主機上,那么這臺主機也就稱為電子郵件服務器。Red
Hat Enterprise Linux 5中,有以下兩個軟件可以同時提供
POP和IMAP服務:dovecot和cyrus-imapd。
七、dovecot服務的實現(xiàn)
1.dovecot服務的安裝
Red Hat Enterprise Linux安裝程序默認沒有安裝dovecot服務,可使
用下面的命令檢查系統(tǒng)是否已經安裝了dovecot服務:
rpm -q dovecot
如果系統(tǒng)還沒有安裝dovecot服務,將Red Hat Enterprise Linux 5第2
張安裝光盤放入光驅,加載光驅后在光盤的Server目錄下找到dovecot服
務的RPM安裝包文件dovecot-1.0-1.2.rc15.el5.i386.rpm和相關程序,然
后使用下面的命令安裝dovecot服務和相關程序:
rpm -ivh /mnt/Server/perl-DBI-1.52-1.fc6.i386.rpm
rpm -ivh /mnt/Server/mysql-5.0.22-2.1.i386.rpm
rpm -ivh /mnt/Server/dovecot-1.0-1.2.rc15.el5.i386.rpm
2.dovecot服務的基本配置
dovecot服務的配置文件是/etc/dovecot.conf。要
啟用最基本的dovecot服務,只需要修改該配置文件
中的以下內容:
protocols =pop3 pop3sprotocol pop3 { listen = *:10100 }
3.啟動dovecot服務并設置為自啟動
/etc/rc.d/init.d/dovecot start
chkconfig --level 345 dovecot on
八、cyrus-imapd服務的實現(xiàn)
1.cyrus-imapd服務的安裝
Red Hat Enterprise Linux安裝程序默認沒有安裝cyrus-imapd服務,可使用下
面的命令檢查系統(tǒng)是否已經安裝了cyrus-imapd服務:
rpm -qa | grep cyrus-imapd
系統(tǒng)當前還沒有安裝cyrus-imapd服務,將Red Hat Enterprise Linux 5第2、3
張安裝光盤放入光驅,加載光驅后在光盤的Server目錄下可找到以下與cyrus-
imapd服務相關的RPM包文件:
cyrus-imapd-perl-2.3.7-1.1.el5.i386.rpm
cyrus-imapd-utils-2.3.7-1.1.el5.i386.rpm
db4-utils-4.3.29-9.fc6.i386.rpm
lm_sensors-2.10.0-3.1.i386.rpm
cyrus-imapd-2.3.7-1.1.el5.i386.rpm
cyrus-imapd-devel-2.3.7-1.1.el5.i386.rpm
然后,可使用rpm -ivh命令分別進行安裝 。
2.cyrus-imapd服務的基本配置
cyrus-imapd服務的配置文件有以下三個:
/etc/sysconfig/cyrus-imapd:是用于啟動cyrus-imapd服務的配置文件;
/etc/cyrus.conf:是cyrus-imapd服務的主要配置文件,其中包含該服務中各個組件(imap、pop3、sieve和nntp等)的設置參數(shù);
/etc/imapd.conf:是cyrus-imapd服務中的imap服務的配置文件。
為了使postfix與cyrus-imapd整合在一起,必須在postfix的
主配置文件/etc/postfix/main.cf中加入以下內容:
mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp
3.啟動cyrus-imapd服務并設置自動運行
默認情況下,利用RPM包文件安裝cyrus-imapd服務后,
該服務是被停用的,所以用戶必須手動啟動它;如果需要開
機自動運行,也必須手動啟用。使用下面的命令可啟動
cyrus-imapd服務并設置其開機時自動運行:
service cyrus-imapd start
chkconfig cyrus-imapd on
4.用戶郵件信箱的管理
創(chuàng)建郵件信箱時,為每一個郵件信箱命名的格式為:
信箱類型.名稱[.文件夾名稱[.文件夾名稱]]…
(1)為Cyrus-IMAP管理員賬戶cyrus設置密碼 passwd cyrus
(2) 使用cyradm管理工具為用戶創(chuàng)建郵件信箱
/usr/bin/cyradm -u cyrus localhost
然后使用下面的命令就可為用戶lbt創(chuàng)建一個郵件信箱:
createmailbox user.lbt
(3)在用戶郵件信箱下添加其他文件夾
使用下面的命令為用戶lbt在其郵件信箱下創(chuàng)建發(fā)件箱、垃圾箱和草稿箱
等其他文件夾:
createmailbox user.lbt.Send
createmailbox user.lbt.Trash
createmailbox user.lbt.Drafts
(4)為用戶郵件信箱設置配額
為用戶lbt的信箱user.lbt設置5M的配額,可使用下面的命令:
setquota user.lbt 5210
用下面的命令查看用戶郵箱的使用情況:
su -l cyrus -c /usr/lib/cyrus-imapd/quota
(5)為用戶郵件信箱設置權限
Cyrus-IMAP中設置用戶信箱權限的6種縮寫形式
常用的cyradm管理命令及其縮寫形式
一.基于ip的認證
由于sendmail與postfix的服務端口相同,所以,必須暫停sendmail服務
,為了不受影響,一般建議直接卸載掉!
1.安裝postfix
[root@mail ~]# mount /dev/cdrom? /mnt/cdrom?
mount: block device /dev/cdrom is write-protected, mounting read-only?
[root@mail ~]# cd /mnt/cdrom/Server
[root@mail Server]# service postfix start?
Starting postfix:????????????????????????????????????????? [? OK? ]?
[root@mail Server]# chkconfig postfix on?
[root@mail Server]# chkconfig --list |grep postfix?
postfix??????????? 0:off??? 1:off??? 2:on??? 3:on??? 4:on??? 5:on??? 6:off?
[root@mail Server]# netstat -tupln |grep 25?
tcp??????? 0????? 0 127.0.0.1:25??????????????? 0.0.0.0:*??????????? LISTEN????? 5167/master
2.查看其特定參數(shù)
[root@mail postfix]#?postconf –n?? //可被修改的參數(shù)?
alias_database = hash:/etc/aliases?
alias_maps = hash:/etc/aliases?
command_directory = /usr/sbin?
config_directory = /etc/postfix?
daemon_directory = /usr/libexec/postfix?
debug_peer_level = 2?
html_directory = no?
inet_interfaces = localhost?
mail_owner = postfix?
mailq_path = /usr/bin/mailq.postfix?
manpage_directory = /usr/share/man?
mydestination = $myhostname, localhost.$mydomain, localhost?
newaliases_path = /usr/bin/newaliases.postfix?
queue_directory = /var/spool/postfix?
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES?
sample_directory = /usr/share/doc/postfix-2.3.3/samples?
sendmail_path = /usr/sbin/sendmail.postfix?
setgid_group = postdrop?
unknown_local_recipient_reject_code = 550
[root@mail postfix]# postconf –d???? //默認參數(shù)
[root@mail postfix]# postconf??? //剛被生效的參數(shù)
[root@mail postfix]# man 5 postconf??? // 可查看配置文檔
[root@mail postfix]# postconf? -e? “參數(shù)=值”
3. 配置postfix主配置文件
[root@mail postfix]# vim /etc/postfix/main.cf
?
?基于ip認證
[root@mail postfix]# telnet 127.0.0.1 25?
Trying 127.0.0.1...?
Connected to localhost.localdomain (127.0.0.1).?
Escape character is '^]'.?
220 mail.163.com ESMTP Postfix?
mail from:user1@163.com?
250 2.1.0 Ok?
rcpt to:user4@sina.com?
250 2.1.5 Ok?
data?
354 End data with <CR><LF>.<CR><LF>?
hahaha?
.?
250 2.0.0 Ok: queued as 601D1BE18C?
quit?
221 2.0.0 Bye?
Connection closed by foreign host.
接收查看:
?
4.發(fā)郵件測試:
接收郵件:
二. 基于賬號的認證:
1.查看是否支持sasl
[root@mail ~]#?cd /usr/lib/sasl2/
[root@mail sasl2]# vim Sendmail.conf?
[root@mail sasl2]# cat? Sendmail.conf?
pwcheck_method:saslauthd??? //支持sasl
[root@mail sasl2]# service saslauthd status?
saslauthd (pid 3356 3355 3354 3353 3352)?is running...
2. 修改postfix的主配置文檔
[root@mail sasl2]# vim /etc/postfix/main.cf
255、256行:啟用sasl? 認證
257行:沒有驗證,不允許匿名賬戶發(fā)郵件
#smtpd_sasl_application_name = smtpd
發(fā)送服務器的名稱叫什么,smtpd為master控制的一個模塊!(可要可不要!)
#smtpd_client_restrictions = permit_sasl_authenticated,reject
經過認證的客戶被中繼,默認都是拒絕的!
接收端限制:經過mynetworks變量定義 、 sasl認證的都接收,沒有認證的都拒絕!
3.測試:
C:\Users\Administrator>telnet 192.168.10.99 25
220 mail.163.com ESMTP Postfix?
mail from:user1@163.com?
250 2.1.0 Ok?
rcpt to:gjp@126.com?
554 5.7.1 <gjp@126.com>:?Relay access denied?
auth login dXNlcjFAMTYzLmNvbQ==?
334 UGFzc3dvcmQ6?
MTIz?
235 2.0.0 Authentication successful
mail from:user1@163.com?
250 2.1.0 Ok?
rcpt to:gjp@126.com?
250 2.1.5 Ok?
data?
354 End data with <CR><LF>.<CR><LF>?
send is ok ??
.?
250 2.0.0 Ok: queued as D6ED0BE189?
quit
問題:任何未知名的郵件都可以向本地郵件發(fā)送信息!
發(fā)送信息:
C:\Users\Administrator>telnet 192.168.10.99 25
220 mail.163.com ESMTP Postfix?
mail from:haha@163.com?
250 2.1.0 Ok?
rcpt to:user1@163.com?
250 2.1.5 Ok?
data?
354 End data with <CR><LF>.<CR><LF>?
subject hah?
welcome to my ou!?
.?
250 2.0.0 Ok: queued as 44836BE152?
quit?
221 2.0.0 Bye
日志信息:
Aug? 7 11:02:17 mail postfix/qmgr[3691]: 44836BE152:?from=<haha@163.com>, size=345, nrcpt=1 (queue active)?
Aug? 7 11:02:17 mail postfix/local[4760]: 44836BE152:?to=<user1@163.com>, relay=local, delay=40, delays=40/0.02/0/0.06, dsn=2.0.0, status=sent (delivered to mailbox)
[root@mail ~]# su – user1?????? 接收!?
[user1@mail ~]$ mail?
Mail version 8.1 6/6/93.? Type ? for help.?
"/var/spool/mail/user1": 2 messages 1 new?
??? 1 MAILER-DAEMON@mail.1? Sat Aug 04 12:53? 13/544?? "DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA"?
>N? 2 haha@163.com????????? Tue Aug? 7 11:02? 15/465?
解決:
[root@mail ~]# vim /etc/postfix/main.cf? 增加以下信息
?
[root@mail ~]# service postfix restart?
Shutting down postfix:???????????????????????????????????? [? OK? ]?
Starting postfix:????????????????????????????????????????? [? OK? ]
C:\Users\Administrator>telnet 192.168.10.99 25
220 mail.163.com ESMTP Postfix?
mail from:me@163.com?
250 2.1.0 Ok?
rcpt to:user2@163.com?
554 5.7.1 <unknown[192.168.10.2]>:?Client host rejected: Access denied
本地都發(fā)不了,更不用說外地了!必須通過合法賬號進行認證!
再次測試:(僅有合法賬號驗證后才能發(fā)送信件)
C:\Users\Administrator>telnet 192.168.10.99 25
220 mail.163.com ESMTP Postfix?
mail from:u@163.com?
250 2.1.0 Ok?
rcpt to:user1@163.com?
554 5.7.1 <unknown[192.168.10.2]>: Client host rejected: Access denied?
auth login dXNlcjFAMTYzLmNvbQ==?
334 UGFzc3dvcmQ6?
MTIz?
235 2.0.0 Authentication successful?
mail from:u@163.com??? //mail from:只能輸入一次!?
503 5.5.1 Error: nested MAIL command?
rcpt to:user1@163.com?
250 2.1.5 Ok?
data?
354 End data with <CR><LF>.<CR><LF>?
hahah? i like there !?
.?
250 2.0.0 Ok: queued as F3BD6BE17B?
quit?
221 2.0.0 Bye
[root@mail ~]#?su - user1?
[user1@mail ~]$ mail?
Mail version 8.1 6/6/93.? Type ? for help.?
"/var/spool/mail/user1": 3 messages 2 new?
??? 1 MAILER-DAEMON@mail.1? Sat Aug 04 12:53? 13/544?? "DON'T"?
>N? 2 haha@163.com????????? Tue Aug? 7 11:02? 15/465??
N? 3?u@163.com???????????? Tue Aug? 7 12:08? 14/448
測試:postfix郵件服務器與sendmail郵件服務器的通信狀況!
sendmail 服務器基于上篇文章:
注意:如果啟用sendmail比較慢,可以修改 /etc/resolv.conf? 把 search一行禁掉!
[root@mail named]# hostname
mail.sina.com
[root@mail named]# su - user4
[user4@mail ~]$ mail
Mail version 8.1 6/6/93.? Type ? for help.
"/var/spool/mail/user4": 2 messages 1 new 2 unread
?U? 1?user1@163.COM???????? Tue Aug? 7 17:31? 27/928?? "2222"
>N? 2?user1@163.COM???????? Tue Aug? 7 17:33? 26/924?? "de"
& r^H
Unknown command: ""
& 2
Message 2:
From?user1@163.COM? Tue Aug? 7 17:33:01 2012
Date: Tue, 7 Aug 2012 17:33:01 +0800 (CST)
Subject: de
From:?user1@163.COM
To:?user4@sina.com
User-Agent: SquirrelMail/1.4.8-5.el5_3.7
MIME-Version: 1.0
Content-Type: text/plain;charset=gb2312
Content-Transfer-Encoding: 8bit
X-Priority: 3 (Normal)
Importance: Normal
de
& r
To:?user4@sina.com?user1@163.COM
Subject: Re: de
hehe!
.
Cc:?
&?
At EOF
& quit
New mail has arrived.
Saved 1 message in mbox
Held 1 message in /var/spool/mail/user4
本文轉自 gjp0731 51CTO博客,原文鏈接:http://blog.51cto.com/guojiping/990838
總結
以上是生活随笔為你收集整理的Linux下巧妙使用邮件服务器之postfix(认证+web)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一线上nagios监控参数
- 下一篇: shell+飞信实现网站监控