postfix+sasl+dovecot
一、郵件服務依賴于DNS服務,所以先配置一個DNS服務器(我的地址是10.0.146.18)
1.修改主機名
# hostname mail.fsy.com
# vim /etc/hostname
修改為:mail.fsy.com
2.安裝bind并修改其配置文件
# yum -y install bind
# vim /etc/named.conf
去掉options中的:
listen-on port 53 { 127.0.0.1; };
?allow-query ????{ localhost; };
3.配置正向區域和反向區域,并測試有無語法錯誤
# vim /etc/named.rfc1912.zones
添加:
zone "fsy.com" IN {
????????type master;
????????file "fsy.com.zone";
????????allow-update { none; };
????????allow-transfer { none; };
};
zone "146.0.10.in-addr.arpa" IN {
????????type master;
????????file "10.0.146.zone";
????????allow-update { none; };
????????allow-transfer { none; };
};
# named-checkconf(測試有無語法錯誤)
4.編輯正向和反向區域文件
# cd /var/named/
# vim fsy.com.zone(編輯正向區域文件)
添加以下內容:
$TTL 86400
@ ??????IN ?????SOA ????ns.fsy.com. admin.fsy.com. (
????????????????????????2016092501
????????????????????????2H
????????????????????????10M
????????????????????????3D
????????????????????????1D)
????????????????IN ?????NS ?????ns
????????????????IN ?????MX ?????10 ?????mail
ns ?????????????IN ?????A ??????10.0.146.18
mail ???????????IN ?????A ??????10.0.146.18
www ??????????IN ?????A ??????10.0.146.18
# vim 10.0.146.zone(編輯反向區域文件)
添加以下內容:
$TTL 86400
@ ??????????????IN ?????SOA ????ns.fsy.com. ????admin.fsy.com. (
????????????????????????????????2016092501
????????????????????????????????2H
????????????????????????????????10M
????????????????????????????????3D
????????????????????????????????1D)
????????????????IN ?????NS ?????ns.fsy.com.
18 ?????????????IN ?????PTR ????ns.fsy.com.
18 ?????????????IN ?????PTR ????mail.fsy.com.
18 ?????????????IN ?????PTR ????www.fsy.com.
5.修改區域配置文件的屬組和權限,并測試有無語法錯誤
# chgrp named fsy.com.zone 10.0.146.zone
# chmod 640 fsy.com.zone 10.0.146.zone
# named-checkzone "fsy.com" fsy.com.zone
# named-checkzone "146.0.10.in-addr.arpa" 10.0.146.zone
6.重啟DNS服務,使其開機自動啟動,并測試
注意:請先更改本機的DNS服務器
# vim /etc/resolv.conf
nameserver 10.0.146.18
# service named restart
# chkconfig named on
# dig -t MX fsy.com @10.0.146.18
# dig -t A mail.fsy.com @10.0.146.18
一切正常!
二、想要實現基于mysql的虛擬用戶,所以先安裝mysql(這里用rpm包安裝)
# yum install mysql-server mysql-devel
# service mysqld start
# chkconfig mysqld on
三、編譯安裝postfix,(我這里用 postfix-2.10.10.tar.gz,相關軟件包可以到postfix官網下載)
注意:首先同步一下時間,取得和硬件時間一致的時間
# hwclock -s
1.解壓
# tar xf postfix-2.10.10.tar.gz
# cd postfix-2.10.10
2.建立postfix和postdrop組和用戶
# groupadd -g 2525 postfix
# useradd -g postfix -u 2525 -s /sbin/nologin -Mpostfix
# groupadd -g 2526 postdrop
# useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop
3.安裝所需軟件包
# yum -y install cyrus-sasl-devel
# yum -y install gcc
# yum install db*-devel
4.安裝
#make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl ?-DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 ?-lssl -lcrypto'
釋義:
CCARGS:指明頭文件位置,CCARGS=-DHAS_MYSQL 指明啟用mysql的連接能
-I/usr/include/mysql 指明mysql的頭文件位置
-DUSE_SASL_AUTH啟用SASL認證
-I/usr/include/sasl指明SASL頭文件位置
-DUSE_TLS使SMTP支持smtps協議
AUXLIBS:指明庫文件位置,-L/usr/lib/mysql 指明MySQL庫文件位置
-lmysqlclient指明MySQL客戶端庫文件
-lz壓縮庫文件
-lm模塊庫文件
-lsslssl的庫文件
# make
# make install
按照以下的提示輸入相關的路徑([]號中的是缺省值,”]”后的是輸入值,省略的表示采用默認值)
?
install_root: [/] /
tempdir: [/root/postfix-2.10.10] /root/postfix-2.10.10
config_directory: [] /etc/postfix
command_directory: [] /usr/sbin
daemon_directory: [] /usr/libexec/postfix
data_directory: [] /var/lib/postfix
html_directory: [] no
mail_owner: [] postfix
mailq_path: [] /usr/bin/mailq.postfix
manpage_directory: [] /usr/share/man
newaliases_path: []/usr/bin/newaliases.postfix
queue_directory: [] /var/spool/postfix
readme_directory: [] /usr/share/doc/postfix-2.6.6/README_FILES
sendmail_path: [] /usr/sbin/sendmail.postfix
setgid_group: [] postdrop
5、生成aliases.db文件
# newaliases
# ls /etc/aliases.db
6、修改配置文件
# cd /etc/postfix/
# vim main.cf
mynetworks = 192.168.182.0/24, 127.0.0.0/8(定義給哪些網段中繼郵件)
myhostname = mail.fsy.com(定義主機名)
myorigin = $mydomain
mydomain = fsy.com
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
ns.$mydomain
inet_interfaces = all監聽的ip地址
說明:
mynetworks 參數指定你所在的網絡的網絡地址,postfix系統根據其值來區別用戶是遠程的還是本地的,如果是本地網絡用戶則允許其訪問
myhostname 參數指定運行postfix郵件系統的主機的主機名,默認情況下,其值被設定為本地機器名;
myorigin參數用來指明發件人所在的域名,即做發件地址偽裝;
mydomain 參數指定您的域名,默認情況下,postfix將myhostname的第一部分刪除而作為mydomain的值;
mydestination參數指定postfix接收郵件時收件人的域名,即您的postfix系統要接收到哪個域名的郵件;
?
5.現在即可啟動測試了(此處可能遇到服務無法啟動,看日志)
# ?service postfix restart
此時可使用本地用戶測試郵件收發了
四、安裝dovecot,實現收郵件
1.安裝:
# yum -y install dovecot
2.修改配置文件
# vim /etc/dovecot/dovecot.conf ,修改以下內容
protocols = pop3 imap lmtp
login_trusted_networks = 0.0.0.0/0
# cd /etc/dovecot/conf.d
# vim 10-auth.conf 修改如下內容
disable_plaintext_auth = yes
# vim 10-ssl.conf修改如下內容
ssl = no
# vim 10-mail.conf修改以下內容
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mbox_write_locks = fcntl
3.創建用戶,并且在用戶家目錄下創建mail/.imap/INBOX
mkdir -p mail/.imap/INBOX
4.啟動服務,并將其添加至服務列表中
# service dovecot start
# chkconfig dovecot on
5.可以測試使用了
如:# telnet mail.fsy.com 110
Trying 10.0.146.18...
Connected to mail.fsy.com.
Escape character is '^]'.
+OK Dovecot ready.
user openstack
+OK
pass 123456
+OK Logged in.
LIST
+OK 5 messages:
1 283
2 276
3 278
4 278
5 281
.
retr 2
?
五、配置SASL (此時我的系統上有一個用戶hadoop,密碼為:123456)
1.、編輯配置文件
# vim /etc/sysconfig/saslauthd
MECH=shadow
2、啟動sasl服務,并使其開機自動啟動
# service saslauthd start
# chkconfig saslauthd on
saslauthd -v: 顯示當前主機saslauthd服務所支持的認證機制,默認為pam
3、測試命令進行測試
# testsaslauthd -u hadoop -p 123456
4、說明基于哪種方式實現認證
# vim /usr/lib/sasl2/smtpd.conf
添加如下內容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
5、重啟sasl服務,使其讀取smtpd.conf這一配置文件
# service saslauthd restart
6、測試是否支持SASL
# postconf -a
其中出現:cyrus,表明支持SASL
7、編輯postfix的配置文件,添加以下內容
# vim /etc/postfix/main.cf
############################CYRUS-SASL############################
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_path = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
釋義:
broken_sasl_auth_clients = yes是否啟用客戶端sasl驗證
smtpd_recipient_restrictions=
permit_mynetworks允許本地網絡
permit_sasl_authenticated允許sasl驗證通過的用戶
reject_invalid_hostname拒絕主機名不合法的用戶
reject_non_fqdn_hostname拒絕主機名不是fqdn格式的用戶
reject_unknown_sender_domain拒絕無法識別的發件人域
reject_non_fqdn_sender拒絕不是fqdn格式的發件人
reject_non_fqdn_recipient拒絕沒有fqdn格式的發件人
reject_unknown_recipient_domain拒絕無法識別的收件人域
reject_unauth_pipelining拒絕無法驗證的管道
reject_unauth_destination拒絕非本域的收件人
smtpd_sasl_auth_enable = yes啟用sasl認證功能
smtpd_sasl_local_domain = $myhostname本地主機不用認證
smtpd_sasl_security_options = noanonymous不主持匿名用戶
smtpd_sasl_path = smtpdsmtpd要使用sasl功能
smtpd_banner =顯示歡迎信息
?
為了顯示效果,修改如下
mynetworks = 127.0.0.0/8
7、重啟服務,可以測試!
[root@mail ~]# service postfix restart
8、注意:用戶認證需要生成需要將用戶名和密碼轉換為base64
[root@mail ~]# echo -n "hadoop" | openssl base64
[root@mail ~]# echo -n "123456" | openssl base64
?
測試:
測試結果:
[root@mail ~]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 Welcome to our mail.fsy.com ESMTP,Warning: Version not Available!
auth login
334 VXNlcm5hbWU6
aGFkb29w
334 UGFzc3dvcmQ6
MTIzNDU2
235 2.7.0 Authentication successful
mail from:hadoop@fsy.com
250 2.1.0 Ok
rcpt to:hello@aol.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
hello hao are you
.
250 2.0.0 Ok: queued as 76B841FDE5
quit ??
221 2.0.0 Bye
Connection closed by foreign host.
?
?
?
?
?
?
?
轉載于:https://blog.51cto.com/10927734/1856838
總結
以上是生活随笔為你收集整理的postfix+sasl+dovecot的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 介绍MyBatis代码生成网站(四) -
- 下一篇: springmvc的讲解
