久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Linux 郵件服務(wù)器 之跟我一步一步來(lái)實(shí)現(xiàn)一個(gè)郵件系統(tǒng)

 株野 2017-03-10

上一篇介紹了郵件服務(wù)器的各組件功能和原理,這次來(lái)由淺的入深來(lái)一步步實(shí)現(xiàn)一個(gè)郵件系統(tǒng),。


實(shí)驗(yàn)環(huán)境:

操作系統(tǒng)CentOS release 5.11 64位
postfix-2.11.6
courier-authlib-0.64.0
cyrus-sasl-2.1.22-7.el5_8.1
cyrus-sasl-plain-2.1.22-7.el5_8.1
dovecot.x86_64 0:1.0.7-8.el5_9.1
extman-1.1
extmail-1.2
Unix-Syslog-1.1

一、安裝postfix,,建立基本配置

postfix安裝過(guò)程(略)詳細(xì)可見上一篇博文

http://tchuairen.blog.51cto.com/3848118/1684872


1,、編輯配置文件" /etc/postfix/main.cf " 定義如下內(nèi)容:

1
2
3
4
5
myhostname = mail.qupeiyin.net
myorigin = $mydomain
mydomain = qupeiyin.net
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain
mynetworks = 127.0.0.0/8,mynetworks

參數(shù)說(shuō)明:

myhostname主機(jī)名,,與host那么相同,。
myorigin發(fā)件人地址域
mydomain  所在域
mydestination目標(biāo)收件地址
mynetworks 可以被中繼的客戶端網(wǎng)段
alias_map = hash:/etc/aliases別名查找表

2、安裝dovecot實(shí)現(xiàn)郵件接收

yum install dovecot -y

編輯配置文件 /etc/dovecot/dovecot.conf 

啟用協(xié)議

protocols = imap pop3

啟動(dòng)dovecot服務(wù)

/etc/init.d/dovecot start

啟動(dòng)成功后會(huì)監(jiān)聽端口:imap4:143/tcp,,pop3:110/tcp 以明文方式工作,;


3、postfix + SASL 用戶認(rèn)證

saslauthd -v  顯示當(dāng)前主機(jī)saslauthd服務(wù)所支持的驗(yàn)證方式

修改驗(yàn)證方式

vim /etc/sysconfig/saslauthd

wkiol1xw0dyhupuwaac5ir3uohs552.jpg


啟動(dòng)saslauthd服務(wù)

/etc/init.d/saslauthd start

設(shè)置開機(jī)啟動(dòng)

chkconfig saslauthd on

測(cè)試驗(yàn)證機(jī)制是否可用,,出現(xiàn)OK表示正常,;

testsaslauthd -u username-p pass

0: OK "Success."


郵箱格式:

mbox:一個(gè)文件存儲(chǔ)所有郵件

maildir:一個(gè)文件存儲(chǔ)一封郵件,所有郵件存儲(chǔ)在一個(gè)目錄中,;

#home_mailbox = Mailbox  定義郵箱格式

#home_mailbox = Maildir/

#mail_spool_directory = /var/mail   定義maildir格式郵箱文件的保存路徑


4,、讓postfix支持sasl認(rèn)證功能

編輯配置文件 /etc/postfix/main.cf 添加如下內(nèi)容:

1
2
3
4
5
6
7
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 Server !

參數(shù)說(shuō)明:

broken_sasl_auth_clients 是否要通過(guò)SASL驗(yàn)證客戶端身份
smtpd_recipient_restrictions 定義收件人限制
smtpd_sasl_auth_enable = yes啟用SASL認(rèn)證功能
smtpd_sasl_local_domain = $myhostname 基于SASL認(rèn)證的時(shí)候指定本地的域
smtpd_sasl_security_optionsSASL認(rèn)證的安全選項(xiàng),noanonymous表示不支持匿名用戶
smtpd_sasl_path = smtpd指定使用SASL的服務(wù)器程序
smtpd_banner 定義登陸時(shí)候的歡迎信息


參數(shù)說(shuō)明(二):

permit_mynetworks允許本地網(wǎng)絡(luò)
permit_sasl_authenticated允許SASL驗(yàn)證通過(guò)的用戶
reject_invalid_hostname拒絕不合法的主機(jī)名的主機(jī)來(lái)收發(fā)郵件
reject_non_fqdn_hostname拒絕不是fqdn格式主機(jī)名的主機(jī)
reject_unknown_sender_domain拒絕無(wú)法識(shí)別的發(fā)件人域
reject_non_fqdn_sender拒絕沒有fqdn的發(fā)件人
reject_non_fqdn_recipient拒絕沒有fqdn的收件人
reject_unknown_recipient_domain拒絕無(wú)法識(shí)別的收件人域
reject_unauth_pipelining無(wú)法驗(yàn)證的管道
reject_unauth_destination拒絕無(wú)法驗(yàn)證的目標(biāo)地址


編輯配置文件/usr/lib64/sasl2/smtpd.conf 添加如下內(nèi)容:

pwcheck_method:saslauthd

mech_list:PLAIN LOGIN

log_level:3

當(dāng)需要調(diào)試的時(shí)候,,打開log_level可以輸出更為詳細(xì)的信息,。


5、實(shí)現(xiàn)postfix基于客戶端的訪問(wèn)控制

在配置文件"/etc/postfix/main.cf"使用如下參數(shù)控制:

1
2
3
4
5
smtpd_client_restrictions= 
smtpd_data_restrictions= 
smtpd_helo_restrictions=  
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtpd_sender_restrictions=

參數(shù)說(shuō)明:

smtpd_client_restrictions用于限定符合條件的才允許連接服務(wù)器
smtpd_data_restrictions用于限定符合條件的用戶才允許發(fā)送data指令
smtpd_helo_restrictions用于限定符合條件的用戶才允許發(fā)送helo指令
smtpd_recipient_restrictions用于限定符合條件的用戶才允許發(fā)送rcpt to指令
smtpd_sender_restrictions用于限定符合條件的用戶才允許發(fā)送mail from指令


內(nèi)置限制條件:(更多參考postfix手冊(cè))

reject_unauth_destination-拒絕未經(jīng)認(rèn)證的目標(biāo)

permit_mynetworks-該網(wǎng)段的主機(jī)可以被中繼


編輯配置文件 /usr/lib64/sasl2/smtpd.conf 添加以下內(nèi)容:

pwcheck_method:saslauthd

mech_list:PLAIN LOGIN


訪問(wèn)控制文件

    /etc/postfix/access

    [email protected] reject

    microsoft.com ok

規(guī)則編寫格式:

pattern  action

郵件地址的pattern格式如下:

user@domain用于匹配指定郵件地址
domain.tld用于匹配以此域名作為郵件地址中的域名部分的所有郵件地址
user@用于匹配以此作為郵件地址中用戶名部分的所有郵件地址


主機(jī)名稱/地址 pattern格式如下:

ip    用于匹配特定的IP地址或網(wǎng)絡(luò)內(nèi)的所有主機(jī)

network /mask  CIDR格式,,匹配指定網(wǎng)絡(luò)內(nèi)的所有主機(jī)

關(guān)于action

ok 接受其pattern匹配的郵件地址或主機(jī)名稱/地址

拒絕部分:

4NN text

5NN text

    其中4NN類表示過(guò)一會(huì)重試,,5NN類表示嚴(yán)重錯(cuò)誤。

REJECT optional text  拒絕,;text為可選信息

DEFER  optional text  拒絕,;text為可選信息


自定義訪問(wèn)表的條件通常使用check_client_access,check_helo_access,,check_sender_access,,check_recipient_access 進(jìn)行,他們后面通常跟上type:mapname格式的訪問(wèn)類型和名稱,。其中,,check_sender_access,check_recipient_access 用來(lái)檢查客戶端提供的郵件地址,,其訪問(wèn)表中可以使用完整的郵件地址,,如[email protected];也可以只使用域名,,如果tuchao.com,,還可以只有用戶名的部分,如hadoop@,。


實(shí)例演示(一):

拒絕ip:115.204.89.87  windows 客戶端發(fā)送郵件

1,、編輯 /etc/postfix/access 作為客戶端檢查控制文件,添加如下一行:

115.204.89.87 REJECT

2、將此文件轉(zhuǎn)換為hash格式

postmap  /etc/postfix/access

wkiom1xw146ajwngaacrfxhnbiq692.jpg

3,、配置postfix使用此文件對(duì)客戶端進(jìn)行檢查

編輯配置文件 vim /etc/postfix/main.cf 加入一行:

smtpd_client_restrictions = check_client_access hash:/etc/postfix/access

注:這里的hash類型就代表了.db的文件,,所以這里不要寫后綴。


4,、讓postfix重新載入配置文件

/etc/init.d/postfix reload

現(xiàn)在使用windows上的客戶端發(fā)郵件,就會(huì)看到被拒絕了,;

wkiol1xw2gvblvdlaad_pewg3l8581.jpg


實(shí)例演示(二):

拒絕所在域?yàn)?huairen.com 的發(fā)件人發(fā)送郵件,。

1、編輯 /etc/postfix/access 作為客戶端檢查控制文件,,添加如下一行:

huairen.com REJECT


2,、將此文件轉(zhuǎn)換為hash格式

postmap  /etc/postfix/access


3、配置postfix使用此文件對(duì)客戶端進(jìn)行檢查

編輯配置文件 vim /etc/postfix/main.cf 加入一行:

smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access


4,、讓postfix重新載入配置文件

/etc/init.d/postfix reload

修改客戶端的發(fā)件人地址,,我這里使用的Outlook。 文件—賬戶設(shè)置—找到自己的郵箱地址—更改,;

wkiom1xw2caxnmybaacgobaeylk257.jpg

然后嘗試發(fā)一封郵件出去

wkiol1xw2-tcarfgaaepircnzhq948.jpg

可以明顯看到拒絕信息,,Sender address rejected:Access denied


實(shí)例演示(三):

拒絕所有郵件頭部用戶名為tuchao的地址發(fā)郵件

1、添加一個(gè)訪問(wèn)控制文件 /etc/postfix/mailhostdeny 作為客戶端檢查控制文件,,添加如下一行:

tuchao@ REJECT


2,、將此文件轉(zhuǎn)換為hash格式

postmap  /etc/postfix/mailhostdeny 


3、配置postfix使用此文件對(duì)客戶端進(jìn)行檢查

編輯配置文件 vim /etc/postfix/main.cf 加入一行:

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/mailhostdeny,permit_mynetworks,reject_unauth_destination

注:在smtpd_recipient_restrictions配置中,,必須要有兩個(gè)內(nèi)置參數(shù)permit_mynetworks,reject_unauth_destination,,如果需要加入其他參數(shù),這兩個(gè)內(nèi)置參數(shù)放到最后,。


4,、讓postfix重新載入配置文件

/etc/init.d/postfix reload

嘗試給[email protected]發(fā)送郵件

wkiom1xw2k6qnjwzaadmcx2x-94712.jpg

可以看到收件人不符合要求被拒絕了


郵件別名的使用

編輯別名配置文件 /etc/aliases 加入如下兩行:

a:    python 

tuchao:  [email protected]

newaliases  執(zhí)行此命令用于生成別名文件的hash格式,便于查找,,每次修改過(guò)aliases文件都要執(zhí)行,。

說(shuō)明:a:表示把所有發(fā)給本地a用戶的郵件,全部轉(zhuǎn)發(fā)給本地的python用戶,,這里a用戶不存在也沒關(guān)系服務(wù)器能識(shí)別到別名就可以了,。  把所有發(fā)給本地tuchao用戶的郵件。全部轉(zhuǎn)發(fā)至[email protected],。


給a用戶發(fā)送郵件測(cè)試

wkiom1xw2tdg7q2_aacnzkgbllg945.jpg

給tuchao用戶發(fā)郵件

wkiom1xw2usrvlwfaaf7xwxs5s4458.jpg


過(guò)程中遇到的錯(cuò)誤記錄


錯(cuò)誤一,、-ERR Plaintext authentication disallowed on non-secure (SSL/TLS) connections.

RHEL5的dovecot都是不需要做任何修改,默認(rèn)就可以使用的,。
RHEL6對(duì)dovecot做了比較嚴(yán)格的默認(rèn)配置,,如果使用默認(rèn)配置,客戶端出現(xiàn)錯(cuò):

-ERR Plaintext authentication disallowed on non-secure (SSL/TLS) connections.

需要修改dovecot主配置文件/etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
login_trusted_networks = 0.0.0.0/0

設(shè)置/etc/dovecot/conf.d/10-mail.conf配置文件如下:
mail_location = mbox:~/mail:INBOX=/var/mail/%u


設(shè)置完mail_location值后,需要重啟dovecot服務(wù),,同時(shí)需要?jiǎng)?chuàng)建相關(guān)的目錄,,否則還會(huì)出現(xiàn)如下錯(cuò)誤:

freebsd# telnet 192.168.50.24 110
Trying 192.168.50.24...
Connected to 192.168.50.24.
Escape character is '^]'.
+OK Dovecot ready. <[email protected]>
user oracle
+OK
pass oracle
-ERR [IN-USE] Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2010-12-21 16:56:40]
Connection closed by foreign host.

[root@rhel6 ~]# tail -f /var/log/maillog
Dec 21 16:56:40 rhel6 dovecot: pop3-login: Login: user=<oracle>, method=PLAIN, rip=192.168.50.211, lip=192.168.50.24, mpid=10115, secured
Dec 21 16:56:41 rhel6 dovecot: pop3(oracle): Error: chown(/u01/oracle/mail/.imap/INBOX, -1, 12(mail)) failed: Operation not permitted (egid=501(dba), group based on

/var/mail/oracle)
Dec 21 16:56:41 rhel6 dovecot: pop3(oracle): Error: mkdir(/u01/oracle/mail/.imap/INBOX) failed: Operation not permitted
Dec 21 16:56:41 rhel6 dovecot: pop3(oracle): Error: Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2010-12-21 16:56:40]
Dec 21 16:56:41 rhel6 dovecot: pop3(oracle): Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0


在該用戶家目錄下創(chuàng)建相應(yīng)的目錄:

su - tuchao

mkdir -p mail/.imap/INBOX


錯(cuò)誤二、Temporary lookup failure

通過(guò)查看日志發(fā)現(xiàn)是沒有aliase文件導(dǎo)致的,,所以果斷的添加的這么個(gè)文件,,然后postmap一下就可以了。

postmap /etc/aliases


二,、構(gòu)建基于虛擬用戶的虛擬域郵件系統(tǒng)架構(gòu)

wkiol1xbixghkbo0aam0ovnsdbk639.jpg

1,、編譯安裝courier-authlib

官網(wǎng):http://www./download.html#authlib

安裝依賴的程序包,如果使用MySQL認(rèn)證的話,,需要安裝MySQL,。

yum install libtool openssl-devel tcl tcl-devel libart-lgpl libart-lgpl-devel expect libtool-ltdl libtool-ltdl-devel -y

編譯參數(shù)

 ./configure \
--prefix=/usr/local/courier-authlib \
--sysconfdir=/etc \
--without-authpam \
--without-authvchkpw \
--without-authpgsql \
--with-authmysql \
--with-mysql-libs=/alidata/server/mysql/lib/ \
--with-mysql-includes=/alidata/server/mysql/include/ \
--with-redhat \
--with-authmysqlrc=/etc/authmysqlrc \
--with-authdaemonrc=/etc/authdaemonrc \
--with-mailuser=postfix \
--with-mailgroup=postfix \
--with-ltdl-lib=/usr/lib \
--with-ltdl-include=/usr/include/ \

LDFLAGS="-L/usr/lib64 -L/lib64"


--sysconfdir 配置文件的安裝目錄

--without-authpam 不支持pam認(rèn)證

--with-redhat 實(shí)現(xiàn)基于redhat系統(tǒng)的優(yōu)化,如果不是redhat系統(tǒng)不用加此參數(shù),;

--with-authmysqlrc 存放courier-authlib給mysql的配置文件路徑

--with-authdaemonrc 存放該服務(wù)的配置文件路徑

make && make install 


可以使用 --with-authdaemonvar=/var/spool/authdaemon 選項(xiàng)來(lái)指定進(jìn)程套接字目錄路徑


編譯過(guò)程中遇到的錯(cuò)誤:

1,、在./configure的時(shí)候出現(xiàn)錯(cuò)誤 configure: error: invalid ltdl library directory: `/usr/lib64/'

筆者在centos6.5 64位的系統(tǒng)上試了多次,也確保安裝了libtool-ltdl libtool-ltdl-devel,,依舊不行,。

思路:當(dāng)什么依賴的庫(kù)和程序都安裝了后,還是提示找不到,,這時(shí)候就要考慮依賴的庫(kù)與程序的版本不對(duì)應(yīng),。

懷疑是courier-authlib 版本太新和系統(tǒng)庫(kù)不匹配,于是將courier-authlib0.66.3 降低版本到 0.66.1 ,, 0.65.0,,0.64.0

這時(shí)候應(yīng)該不是軟件版本問(wèn)題,懷疑系統(tǒng)版本的庫(kù)與該程序不兼容,。

嘗試將centos6替換為centos5.11 X86_64 ,,編譯courier-authlib0.64.0 沒有再出現(xiàn)此錯(cuò)誤。


2,、編譯出現(xiàn)錯(cuò)誤 configure:error The Courier Unicode Library 1.2 appears not to be installed 

提示Courier Unicode Library 沒有安裝,,需要下載courier-unicode-1.2.tar.bz2 安裝即可。

./configure

make && make install


3,、./configure 出現(xiàn)錯(cuò)誤 configure: error: –with-authmysql specified but no mysqlclient.so

是因?yàn)楸緳C(jī)上有兩個(gè)MySQL,,卸載原來(lái)的MySQL就可以了。


4,、編譯出現(xiàn)錯(cuò)誤 libltdl.so: could not read symbols: File in wrong format

是由于64位機(jī)器的原因,,解決辦法在configure的選項(xiàng)中加上  LDFLAGS="-L/usr/lib64 -L/lib64"

參考文檔:http://wuliangxx./blog/656856


配置courier-authlib

建立配置文件,和configure  參數(shù)定義的名稱一致

--with-authmysqlrc=/etc/authmysqlrc 

--with-authdaemonrc=/etc/authdaemonrc 
cp /etc/authdaemonrc.dist  /etc/authdaemonrc

cp /etc/authmysqlrc.dist /etc/authmysqlrc

編輯配置文件"/etc/authdaemonrc"  修改以下參數(shù):

authmodulelist="authmysql"

authmodulelistorig="auauthmysql"

daemons=10

authdaemonvar=/usr/local/courier-authlib/var/spool/authdaemon

DEBUG_LOGIN=0

參數(shù)說(shuō)明:

authmodulelist  指定支持認(rèn)證的模塊列表

authmodulelistorig  指定源模塊列表

daemons 開啟的進(jìn)程數(shù),,根據(jù)負(fù)載合理設(shè)置,。

authdaemonvar 指定進(jìn)程套接字目錄路徑

DEBUG_LOGIN 是否啟動(dòng)DEBUG模式記錄日志,0表示不啟用,2表示啟用,。

編輯配置文件 /etc/authmysqlrc 

1
2
3
4
5
6
7
8
9
10
11
12
13
MYSQL_SERVER           localhost
MYSQL_USERNAME         root
MYSQL_PASSWORD         redhat
MYSQL_SOCKET          /tmp/mysql.sock  連接MySQL的套接字文件
MYSQL_DATABASE         extmail  指定數(shù)據(jù)庫(kù)名
MYSQL_USER_TABLE       mailbox  指定用戶表
MYSQL_CRYPT_PWFIELD    password  指定保存密碼的表字段名
MYSQL_UID_FIELD        2525  指定postfix的Uid
MYSQL_GID_FIELD        2525  指定postfix的Gid
MYSQL_LOGIN_FIELD      username  指定保存用戶名的表字段名
MYSQL_HOME_FIELD       concat('/var/mailbox',homedir)  指定用戶的郵筒位置
MYSQL_NAME_FIELD       name  指定用戶的全名保存在哪個(gè)字段上
MYSQL_MAILDIR_FIELD    concat('/var/mailbox/',maildir)  創(chuàng)建和用戶同名的郵件目錄


提供服務(wù)啟動(dòng)腳本

cp courier-authlib-0.64.0/courier-authlib.sysvinit /etc/init.d/courier-authlib

chmod +x /etc/init.d/courier-authlib

chkconfig --add courier-authlib

chkconfig courier-authlib on

啟動(dòng)服務(wù)

service courier-authlib start


2,、配置postfix支持虛擬域和虛擬用戶

1、編輯配置文件 /etc/postfix/main.cf 添加以下內(nèi)容:

1
2
3
4
5
6
7
8
9
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains = 
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
mydestination =
local_recipient_maps =

virtual_transport  指定用戶的投遞代理

maiildrop_destination_recipient_limit  = 1  定義限制,,一次只投遞一封郵件到一個(gè)用戶郵箱,。

maildrop_destination_concurrency_limit  =1 一次并發(fā)只投遞一封郵件

配額限制

message_size_limit = 14336000

virtual_mailbox_limit = 20971520

message_size_limit  定義單個(gè)郵件的最大大小

virtual_mailbox_limit  每個(gè)用戶的郵箱最大可用空間


配置postfix和courier-authlib

新建虛擬用戶郵箱所在的目錄,并將權(quán)限賦予postfix用戶,。

mkdir  /var/mailbox

chown -R postfix /var/mailbox


修改配置文件 /usr/lib/sasl2/smtpd.conf  沒有則建立,,加入以下內(nèi)容:

pwcheck_method:authdaemond

log_level:3

mech_list:PLAIN LOGIN

authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

authdaemond_path 此參數(shù)指定的路徑,是和/etc/authdaemonrc文件中authdaemonvar參數(shù)定義的路徑相對(duì)應(yīng),。

下載extman源碼,,使用其doc目錄下的extmail.sql和init.sql建立數(shù)據(jù)庫(kù):

tar xf extman-1.1.tar.gz

cd extman-1.1/docs

mysql <extmail.sql

mysql <init.sql


復(fù)制需要的配置文件

cp mysql* /etc/postfix/

并且將復(fù)制過(guò)去的5個(gè)配置文件,,根據(jù)實(shí)際mysql的賬號(hào)配置做相應(yīng)的修改,。

對(duì)于MySQL5.1以后的版本,需要將腳本extmail.sql使用如下命令進(jìn)行語(yǔ)法修改:

sed -i 's/TYPE=MyISAM/ENGINE=InnoDB/g' extmail.sql 

如果還出現(xiàn)錯(cuò)誤 BLOB/TEXT column 'question' can't have a default value 則進(jìn)入腳本修改SQL語(yǔ)句,,將text字段的default參數(shù)刪除即可,。


授權(quán)用戶extmail訪問(wèn)extmail數(shù)據(jù)庫(kù)的權(quán)限

GRANT ALL PRIVILEGES ON extmail.* TO 'extmail'@'localhost' IDENTIFIED BY 'extmail123';

GRANT ALL PRIVILEGES ON extmail.* TO 'extmail'@'127.0.0.1' IDENTIFIED BY 'extmail123';

啟用虛擬域以后,需要取消中心域,,即注釋掉配置文件“/etc/postfix/main.cf”的幾個(gè)參數(shù):myhostname,,myorigin,mydomain,,mydestination,; 也可以把mydestination 改成自己需要的;

重啟postfix

service postfix restart

這是會(huì)發(fā)現(xiàn)無(wú)法給之前配置的域收發(fā)郵件了,,因?yàn)橹暗膮?shù)我們已經(jīng)注釋了,。 這時(shí)域的配置保存在exmail庫(kù)中的domain表中。


配置dovecot

vim /etc/dovecot.conf

1
2
3
4
5
6
7
8
9
auth default {
    mechanisms = plain
    passdb sql {
        args = /etc/dovecot-mysql.conf
userdb sql {
    args = /etc/dovecot-mysql.conf

wkiom1xbomgtjxu_aaclmwirqy0163.jpg


參數(shù)說(shuō)明:

mail_location = maildir:/var/mailbox/%d/%n/Maildir

這兩個(gè)為dovecot支持的兩個(gè)弘:

%d  表示域名

%n  表示用戶名

建立配置文件:vim /etc/dovecot-mysql.conf 

1
2
3
4
5
6
mail_location = maildir:/var/mailbox/%d/%n/Maildir
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail123
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'

注:如果mysql服務(wù)器是本地主機(jī),,如果mysql.sock文件路徑不是默認(rèn)的/var/lib/mysql/mysql.sock,,可以使用host="socket" 來(lái)指定新位置:

connect = host=/tmp/mysql.sock dbname=extmail user=extmail password=extmail123 

重啟dovecot服務(wù)

service dovecot restart


安裝Extmail-1.2

tar zxvf extmail-1.2.tar.gz 

cd extmail-1.2

mkdir -pv /var/www/extsuite

mv extmail-1.2 /var/www/extsuite/extmail

cp /var/www/extsuite/extmail/webmail.cf.default  /var/www/extsuite/extmail/webmail.cf


修改主配置文件 /var/www/extsuit/extmail/webmail.cf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SYS_CONFIG = /var/www/extsuite/extmail/
SYS_LANGDIR = /var/www/extsuite/extmail/lang
SYS_TEMPLDIR = /var/www/extsuite/extmail/html
SYS_HTTP_CACHE = 0
SYS_SMTP_HOST = 127.0.0.1
SYS_SMTP_PORT = 25
SYS_SMTP_TIMEOUT = 5
SYS_SPAM_REPORT_ON = 0
SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail123
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket

SYS_CONFIG 指定程序目錄

SYS_LANGDIR 指定語(yǔ)言字符集的目錄

SYS_TEMPLDIR 指定臨時(shí)文件的目錄

SYS_HTTP_CACHE http是否要緩存

SYS_SMTP_HOST 指定smtp服務(wù)器

SYS_SMTP_PORT smtp服務(wù)端口號(hào)

SYS_SMTP_TIMEOUT 指定超時(shí)時(shí)間

SYS_SPAM_REPORT_ON 發(fā)現(xiàn)垃圾郵件是否報(bào)告

SYS_USER_LANG 指定語(yǔ)言支持

SYS_MAILDIR_BASE 指定用戶的郵筒文件夾

SYS_MYSQL_TABLE 指定在mysql中對(duì)應(yīng)的表

SYS_MYSQL_ATTR_USERNAME 用戶名對(duì)應(yīng)的字段屬性

SYS_MYSQL_ATTR_DOMAIN 域?qū)?yīng)的字段屬性

SYS_MYSQL_ATTR_PASSWD 用戶密碼對(duì)應(yīng)的字段屬性

SYS_AUTHLIB_SOCKET 指定courier-authlib socket文件位置


配置httpd

由于extmail要進(jìn)行本地郵件的投遞操作,故必須將運(yùn)行httpd服務(wù)器用戶的身份修改為你的郵件投遞代理的用戶,,如果打開apache的suexec功能,,可以實(shí)現(xiàn)虛擬主機(jī)運(yùn)行身份的指定。 此例中的MDA為postfix自帶,,所以指定為postfix用戶,。

1
2
3
4
5
6
7
<VirtualHost *:8081>
    ServerName mail.qupeiyin.net
    DocumentRoot /var/www/extsuite/extmail/html/
    ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
    Alias /extmail /var/www/extsuite/extmail/html/
    CustomLog logs/mail.qupeiyin.net.log common
</VirtualHost>

如果不打開apache的suexec功能,也可以讓整個(gè)apache用postfix用戶跑

User postfix

Group postfix


修改cgi執(zhí)行文件屬主為apache服務(wù)運(yùn)行的身份用戶

chown -R postfix.postfix /var/www/extsuite/extmail/cgi/


安裝Unix-Syslog解決依賴關(guān)系

可以去http://search./搜索下載源碼包

tar xf Unix-Syslog-1.1.tar.gz

cd Unix-Syslog-1.1

perl Makefile.PL

make && make install


配置extman

tar xf extman-1.1.tar.gz

mv extman-1.1 /var/www/extsuite/extman

cp /var/www/extsuite/extman/webman.cf.default /var/www/extsuite/extman/webman.cf


編輯配置文件 /var/www/extsuite/extman/webman.cf

SYS_MAILDIR_BASE = /var/mailbox

SYS_SESS_DIR = /tmp/extman/

SYS_CAPTCHA_ON = 0

SYS_DEFAULT_UID = 2525

SYS_DEFAULT_GID = 2525

SYS_MYSQL_USER = root

SYS_MYSQL_PASS = redhat

SYS_MYSQL_DB = extmail

SYS_MYSQL_HOST = localhost

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock


創(chuàng)建用于保存session的目錄

mkdir /tmp/extman

chown postfix /tmp/extman/

修改cgi目錄屬主

chown -R postfix.postfix /var/www/extsuite/extman/cgi/

在httpd主配置文件中Extmail的虛擬主機(jī)部分,,添加如下兩行:

    ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
    Alias /extman /var/www/extsuite/extman/html

重啟httpd服務(wù)器

service httpd restart


功能測(cè)試:

現(xiàn)在來(lái)訪問(wèn)我們的extmail

wkiom1xbrxed3vejaakegfrrfbm739.jpg

選擇登陸郵箱管理,,空密碼賬號(hào),直接點(diǎn)登陸跳到下一個(gè)界面:

wkiol1xbsyeyj_weaaftbqskgns486.jpg

初始密碼為:extmail*123*

登陸之后可進(jìn)入郵箱控制臺(tái)

wkiol1xbshvyb-pfaaepcp-h5jc895.jpg

現(xiàn)在登陸一個(gè)用戶來(lái)發(fā)送郵件

wkiom1xbsffz-encaagopl30leo404.jpg


點(diǎn)擊發(fā)送后,QQ郵箱立馬就收到了,。

wkiom1xbsnzicixfaacub0xk0ai661.jpg


一套郵件系統(tǒng)就基本實(shí)現(xiàn)了,,這里還沒加上反垃圾郵件功能和SSL加密功能。

這些功能可參考:

extmail官網(wǎng):http://www./

本文出自 “突破舒適區(qū)” 博客,,請(qǐng)務(wù)必保留此出處http://tchuairen.blog.51cto.com/3848118/1686875


   

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多