中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下如何安裝Postfix郵件虛擬用戶及虛擬域

發布時間:2022-02-17 09:49:16 來源:億速云 閱讀:185 作者:小新 欄目:開發技術

小編給大家分享一下Linux下如何安裝Postfix郵件虛擬用戶及虛擬域,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Postfix基于虛擬用戶虛擬域的郵件架構

Linux下如何安裝Postfix郵件虛擬用戶及虛擬域

上圖是一個幾乎完整的郵件系統架構圖,這里基于Mysql數據庫進行用戶認證,不管是Postfix、Dovecot、webmail都需要去Mysql數據庫中進行用戶認證。

1、用戶可以基于outlook連接postfix然后通過Courier-authlib連接到Mysql進行認證,認證成功就可以發送郵件。前面我們也是用Cyrus-sasl進行shadow用戶認證,其實Cyrus-sasl也同樣支持Mysql認證。但是由于驅動比較底層配置起來比較繁瑣,所以選用Courier-authlib進行認證,但是從上圖可以看出我們是postfix還是借用Cyrus-sasl函數庫與Courier-authlib進行連接。同樣的道理Postfix也可以直接連接到Courier-authlib但是比較麻煩。

2、用戶可以基于outlook連接Dovecot然后直接到mysql進行認證,認證成功就可以接收Mailbox中的郵件。這里比較簡單,因為Dovecot自身支持到Mysql的認證。

3、用戶可以基于webmail進行收發郵件,同樣通過Extmail/Extman到Mysql中認證,認證成功。就可以基于postfix發郵件,基于Dovecot收郵件。但是Extmail/Extman自身就可以到Mailbox中收取郵件。

Courier-authlib

Courier 是一個優秀的電子信件系統,擁有一個完整的郵件系統:其提供MTA(Courier-MTA),MDA(Maildrop),MUA,MRA(Courier-IMAP),SASL(Courier-authlib)WebMail(sqwebmail)等這些組件。

Courier-authlib是Courier組件中的認證庫,它是courier組件中一個獨立的子項目,用于為Courier的其它組件提供認證服務。其認證功能通常包括驗正登錄時的帳號和密碼、獲取一個帳號相關的家目錄或郵件目錄等信息、改變帳號的密碼等。而其認證的實現方式也包括基于PAM通過/etc/passwd和/etc/shadow進行認證,基于GDBM或DB進行認證,基于LDAP/MySQL/PostgreSQL進行認證等。因此,courier-authlib也常用來與courier之外的其它郵件組件(如postfix)整合為其提供認證服務。

虛擬用戶虛擬域配置

安裝ltdl動態模塊加載器
[root@localhost ~]# yum install libtool-ltdl libtool-ltdl-devel
安裝expect主機間通信
[root@localhost ~]# yum install expect
創建用戶
[root@localhost ~]# groupadd -g 1001 vmail[root@localhost ~]# useradd vmail -u 1001 -g 1001
安裝Courier-authlib
[root@localhost ~]# tar xvf courier-authlib-0.66.1.tar.bz2 -C /usr/src/[root@localhost ~]# cd /usr/src/courier-authlib-0.66.1[root@localhost courier-authlib-0.66.1]# ./configure \--prefix=/usr/local/courier-authlib \
--sysconfdir=/etc \
--without-authpam \
--without-authshadow \
--without-authvchkpw \
--without-authpgsql \
 #以上without是不支持此類認證免得需要安裝依賴的數據包--with-authmysql \
 #基于mysql認證--with-mysql-libs=/usr/lib64/mysql \
--with-mysql-includes=/usr/include/mysql \
 #需要mysql的頭文件和庫文件路徑一定要正確--with-redhat \
 #如果是redhat系統會實現自我優化;如果不是就不要加了--with-authmysqlrc=/etc/authmysqlrc \
 #提供給mysql的配置文件,記錄認證怎樣跟數據進行交互--with-authdaemonrc=/etc/authdaemonrc \
 #courier-authlib自身是一個服務進程所以也需要一個配置文件--with-mailuser=vmail \
--with-mailgroup=vmail \
 #用戶郵件收發管理的用戶和組[root@smtp ~]# make && make install
調整配置文件
[root@localhost ~]# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon #調整一下authdaemon的權限(存放進程套接字)[root@localhost ~]# cp -p /etc/authdaemonrc.dist  /etc/authdaemonrc #調整courier文件名,因--with-authdaemonrc=/etc/authdaemonrc指定了文件名[root@localhost ~]# cp -p /etc/authmysqlrc.dist  /etc/authmysqlrc #調整跟mysql交互文件名,因--with-authmysqlrc=/etc/authmysqlrc指定了文件名
調整courier-authlib配置文件
[root@localhost ~]# vim /etc/authdaemonrcauthmodulelist="authmysql" #指定認證模塊為authmysqlauthmodulelistorig="authmysql" #認證的原始模塊只保留authmysqldaemons=10
 #修改默認開啟進程#DEBUT-LOGIN=2 #如果使用虛擬用戶登錄有問題就打開調試功能看看日志;不然不要打開
調整通過MYSQL進行郵件賬號認證文件
[root@localhost ~]# vim /etc/authmysqlrcMYSQL_SERVER localhost
 #指定Mysql服務器地址MYSQL_USERNAME extmail
 #連接數據庫的用戶名(如果不使用extmail,那么在extman中需要重新指定賬號)MYSQL_PASSWORD extmail
 #用戶密碼MYSQL_PORT 3306
 #指定你的mysql的端口(使用socket通信就不用端口)MYSQL_SOCKET /var/lib/mysql/mysql.sock
 #Mysql的套接字文件MYSQL_DATABASE  extmail
 #存儲用戶的庫(如果不使用extmail,那么在extman中都要更改)MYSQL_USER_TABLE  mailbox
 #存儲用戶的表(mailbox是extman幫我們自動生成的不能改)MYSQL_CRYPT_PWFIELD  password
 #認證密碼字段MYSQL_UID_FIELD  '1001' #vmail用戶的UIDMYSQL_GID_FIELD  '1001' #vmail用戶的GIDMYSQL_LOGIN_FIELD  username
 #認證賬號字段MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
 #concat是mysql的一個函數用來把/var/mailbox/跟homedir連接成一個路徑(homedir是mysql的一個變量值為每一個用戶名)MYSQL_NAME_FIELD  name
 #用戶全名字段,默認MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)
 #虛擬用戶的郵件目錄
Courier-authlib提供SysV服務腳本
[root@localhost ~]# cd /usr/src/courier-authlib-0.66.1/[root@localhost courier-authlib-0.66.1]# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib[root@localhost ~]# chmod 755 /etc/init.d/courier-authlib[root@localhost ~]# chkconfig --add courier-authlib[root@localhost ~]# chkconfig courier-authlib on[root@localhost ~]# service courier-authlib startStarting Courier authentication services: authdaemond

PS:可以使用pstree -a可以看到authdaemond已經生成了11個進程,我們開啟了10個,但是有一個主進程負責生成其他進程。

建立虛擬用戶郵箱目錄
[root@localhost ~]# mkdir -pv /var/mailbox[root@localhost ~]# chown -R vmail /var/mailbox

PS:郵箱目錄屬主為vmail

更改SASL認證模式為authdaemond

Postfix的SMTP認證需要透過Cyrus-SASL連接到authdaemon獲取認證信息

[root@localhost ~]# vim /usr/lib64/sasl2/smtpd.conf#pwcheck_method: saslauthd#mech_list: PLAIN LOGIN#注釋前面實驗使用SASL認證的參數pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
讓Postfix支持虛擬用戶及虛擬域
[root@localhost ~]# vim /etc/postfix/main.cf#################Virtual Mailbox Settings###################virtual_mailbox_base = /var/mailbox
 #用戶郵箱目錄(跟這個參數MYSQL_HOME_FIELD定義的要一致)virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
 #用來查詢用戶賬號信息(這個配置文件中定義了SQL語句,使用extmail用戶)virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
 #用來查詢虛擬域virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
 #用來查詢用戶別名virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
 #每一個虛擬用戶都映射為系統用戶vmailvirtual_transport = virtual
 #指定MDA專門為虛擬用戶投遞代理virtual_mailbox_limit = 20971520
 #磁盤配額

安裝Httpd

[root@localhost ~]# yum install httpd

安裝extman

需要使用源碼extman目錄下docs目錄中的extmail.sql和init.sql建立數據庫extmail

[root@localhost ~]# tar zxvf extman-1.1.tar.gz -C /usr/src/[root@localhost ~]# cd /usr/src/extman-1.1/docs[root@localhost docs]# service mysqld restart[root@localhost docs]# mysql -u root 
[root@localhost docs]# mysql -u root 
[root@localhost docs]# mysql -u root -B -e "show databases;"Database
information_schema
extmail
mysqltest

#對于MySQL-5.1以后版本,其中的服務腳本extmail.sql執行會有語法錯誤,因為MySQL-5.1使用的默認存儲引擎是MyISAM,而在MySQL-5.1之后使用的是InnoDB存儲引擎。可先使用如下命令修改extmail.sql配置文件而后再執行修改方法如下:

sed -i ‘s@TYPE=MyISAM@ENGINE=InnoDB@g’ extmail.sql

#這里我使用的是PRM包,所以MySQL是5.1版本的,不用修改SQL腳本。

這兩個SQL腳本會創建extmail數據庫和表,以及extmail、webman用戶。所以需要授予用戶extmail訪問extmail數據庫的權限(生產環境中extmail給select權限,因為它只需要檢索用戶即可)。同時這里的密碼設置為extmail同上面的配置文件一樣,不然都要改。

mysql> GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
mysql> GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';
mysql> flush privileges;

從Extman中復制Postfix支持虛擬用戶和虛擬域及連接mysql的文件

[root@localhost ~]# cd /usr/src/extman-1.1/docs[root@localhost docs]# cp mysql_virtual_mailbox_maps.cf /etc/postfix/[root@localhost docs]# cp mysql_virtual_domains_maps.cf /etc/postfix/[root@localhost docs]# cp mysql_virtual_alias_maps.cf /etc/postfix/[root@localhost docs]# cp mysql_virtual_limit_maps.cf /etc/postfix/

打開一個文件看看

[root@localhost ~]# cat /etc/postfix/mysql_virtual_domains_maps.cfuser = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = domain
where_field = domain
additional_conditions = AND active = ‘1’

PS:所以在通過mysql認證配置文件/etc/authmysqlrc中的賬號密碼很多地方都要用到,生產環境中全部都要統一修改。

取消前面配置的中心域

使用虛擬域的時候,就需要取消中心域的使用,myhostname、mydomain、myorigin、mydestination,所以現在main.cf配置文件需要添加的參數如下所示:

[root@localhost ~]# vim /etc/postfix/main.cf#################Center Domain Settings###########mynetworks = 127.0.0.0/8#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain#myhostname = smtp.ywnds.com#mydomain = ywnds.com#myorigin = $mydomain#home_mailbox = Maildir/

配置Dovecot基于MySQL認證

[root@localhost ~]# vim /etc/dovecot/dovecot.conf#Ssl = no#disable_plaintext_auth = no#mail_location = maildir:~/Maildir#把dovecot主配置文件/etc/dovecot/dovecot.conf中剛開始添加的幾行數據注釋掉[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.confmail_location = maildir:/var/mailbox/%d/%n/Maildir

 #添加此行指定郵件的提取位置[root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.confdisable_plaintext_auth = no
 #開啟明文驗證(可以選擇把dovecot.conf配置文件中的此參數關閉)auth_mechanisms = plain login
 #支持驗證方法#!include auth-system.conf.ext #取消默認系統驗證!include auth-sql.conf.ext
 #開啟mysql驗證#auth_verbose = yes #認證詳細日志,調試可以打開[root@localhost ~]# vim /etc/dovecot/conf.d/auth-sql.conf.extpassdb {
 driver = sql
 #args = /etc/dovecot/dovecot-sql.conf.ext args = /etc/dovecot/dovecot-sql.conf
}
userdb {
 driver = sql
 #args = /etc/dovecot/dovecot-sql.conf.ext args = /etc/dovecot/dovecot-sql.conf
}

PS:在這個MySQL驗證文件中指定了用戶的賬號和密碼需要通過/etc/dovecot/dovecot-sql.conf這個文件去數據庫中取。

[root@localhost ~]# vim /etc/dovecot/dovecot-sql.confdriver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = CRYPT
password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'user_query = SELECT maildir,uidnumber AS uid,gidnumber AS gid FROM mailbox WHERE username = '%u'解釋:

Driver
 #Dovecot使用自帶的驅動連接MySQLConnect
 #連接本地mysql;數據庫extmail;用戶extmail;密碼extmail。 #說明:如果mysql服務器是本地主機,即host=localhost時,如果mysql.sock文件不是默認的/var/lib/mysql/mysql.sock,可以使用host=“sock文件的路徑”來指定新位置; #例如,使用通用二進制格式安裝的MySQL,其sock文件位置為/tmp/mysql.sock,相應地,connect應按如下方式定義connect = host=/tmp/mysql.sock dbname=extmail user=extmail password=extmail。Default_pass_scheme
 #表明我們的密碼為加密存放Password_query
 #找密碼查詢哪個字段User_query
 #找賬號查詢哪個字段PS:dovecot其實也提供了這么一個配置文件模板,在/usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext

啟動所有服務

[root@localhost ~]# service dovecot restart[root@localhost ~]# service postfix restart[root@localhost ~]# service courier-authlib restart[root@localhost ~]# service mysqld restart

測試虛擬用戶

[root@localhost ~]# /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmailAuthentication succeeded.


以上是“Linux下如何安裝Postfix郵件虛擬用戶及虛擬域”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天等县| 桐城市| 德江县| 全椒县| 祁门县| 台南县| 蒙山县| 闸北区| 黄陵县| 永州市| 新竹县| 巴里| 尼玛县| 丹阳市| 加查县| 景宁| 白沙| 山阴县| 尤溪县| 奉化市| 宝应县| 邢台市| 同仁县| 双柏县| 肥城市| 丰城市| 鹿泉市| 靖边县| 公安县| 九龙城区| 石泉县| 营口市| 土默特左旗| 乌兰察布市| 华池县| 邓州市| 商洛市| 图们市| 广元市| 中西区| 古交市|