轉自:http://tchuairen.blog.51cto.com/3848118/1686875/html
上一篇介紹了郵件服務器的各組件功能和原理,此次來由淺的入深來一步步實現一個郵件系統。
python
實驗環境:mysql
操做系統 | 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 |
1、安裝postfix,創建基本配置web
postfix安裝過程(略)詳細可見上一篇博文sql
http://tchuairen.blog.51cto.com/3848118/1684872數據庫
一、編輯配置文件" /etc/postfix/main.cf " 定義以下內容:apache
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
|
參數說明:vim
myhostname | 主機名,與host那麼相同。 |
myorigin | 發件人地址域 |
mydomain | 所在域 |
mydestination | 目標收件地址 |
mynetworks | 能夠被中繼的客戶端網段 |
alias_map = hash:/etc/aliases | 別名查找表 |
二、安裝dovecot實現郵件接收
windows
yum install dovecot -ycentos
編輯配置文件 /etc/dovecot/dovecot.conf
啓用協議
protocols = imap pop3
啓動dovecot服務
/etc/init.d/dovecot start
啓動成功後會監聽端口:imap4:143/tcp,pop3:110/tcp 以明文方式工做;
三、postfix + SASL 用戶認證
saslauthd -v 顯示當前主機saslauthd服務所支持的驗證方式
修改驗證方式
vim /etc/sysconfig/saslauthd
啓動saslauthd服務
/etc/init.d/saslauthd start
設置開機啓動
chkconfig saslauthd on
測試驗證機制是否可用,出現OK表示正常;
testsaslauthd -u username-p pass
0: OK "Success."
郵箱格式:
mbox:一個文件存儲全部郵件
maildir:一個文件存儲一封郵件,全部郵件存儲在一個目錄中;
#home_mailbox = Mailbox 定義郵箱格式
#home_mailbox = Maildir/
#mail_spool_directory = /var/mail 定義maildir格式郵箱文件的保存路徑
四、讓postfix支持sasl認證功能
編輯配置文件 /etc/postfix/main.cf 添加以下內容:
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 !
|
參數說明:
broken_sasl_auth_clients | 是否要經過SASL驗證客戶端身份 |
smtpd_recipient_restrictions | 定義收件人限制 |
smtpd_sasl_auth_enable = yes | 啓用SASL認證功能 |
smtpd_sasl_local_domain = $myhostname | 基於SASL認證的時候指定本地的域 |
smtpd_sasl_security_options | SASL認證的安全選項,noanonymous表示不支持匿名用戶 |
smtpd_sasl_path = smtpd | 指定使用SASL的服務器程序 |
smtpd_banner | 定義登錄時候的歡迎信息 |
參數說明(二):
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 | 拒絕沒法驗證的目標地址 |
編輯配置文件/usr/lib64/sasl2/smtpd.conf 添加以下內容:
pwcheck_method:saslauthd
mech_list:PLAIN LOGIN
log_level:3
當須要調試的時候,打開log_level能夠輸出更爲詳細的信息。
五、實現postfix基於客戶端的訪問控制
在配置文件"/etc/postfix/main.cf"使用以下參數控制:
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=
|
參數說明:
smtpd_client_restrictions | 用於限定符合條件的才容許鏈接服務器 |
smtpd_data_restrictions | 用於限定符合條件的用戶才容許發送data指令 |
smtpd_helo_restrictions | 用於限定符合條件的用戶才容許發送helo指令 |
smtpd_recipient_restrictions | 用於限定符合條件的用戶才容許發送rcpt to指令 |
smtpd_sender_restrictions | 用於限定符合條件的用戶才容許發送mail from指令 |
內置限制條件:(更多參考postfix手冊)
reject_unauth_destination-拒絕未經認證的目標
permit_mynetworks-該網段的主機能夠被中繼
編輯配置文件 /usr/lib64/sasl2/smtpd.conf 添加如下內容:
pwcheck_method:saslauthd
mech_list:PLAIN LOGIN
訪問控制文件
/etc/postfix/access
python@admin.com reject
microsoft.com ok
規則編寫格式:
pattern action
郵件地址的pattern格式以下:
user@domain | 用於匹配指定郵件地址 |
domain.tld | 用於匹配以此域名做爲郵件地址中的域名部分的全部郵件地址 |
user@ | 用於匹配以此做爲郵件地址中用戶名部分的全部郵件地址 |
主機名稱/地址 pattern格式以下:
ip 用於匹配特定的IP地址或網絡內的全部主機
network /mask CIDR格式,匹配指定網絡內的全部主機
關於action
ok 接受其pattern匹配的郵件地址或主機名稱/地址
拒絕部分:
4NN text
5NN text
其中4NN類表示過一會重試,5NN類表示嚴重錯誤。
REJECT optional text 拒絕;text爲可選信息
DEFER optional text 拒絕;text爲可選信息
自定義訪問表的條件一般使用check_client_access,check_helo_access,check_sender_access,check_recipient_access 進行,他們後面一般跟上type:mapname格式的訪問類型和名稱。其中,check_sender_access,check_recipient_access 用來檢查客戶端提供的郵件地址,其訪問表中可使用完整的郵件地址,如admin@tuchao.com;也能夠只使用域名,若是tuchao.com,還能夠只有用戶名的部分,如hadoop@。
實例演示(一):
拒絕ip:115.204.89.87 windows 客戶端發送郵件
一、編輯 /etc/postfix/access 做爲客戶端檢查控制文件,添加以下一行:
115.204.89.87 REJECT
二、將此文件轉換爲hash格式
postmap /etc/postfix/access
三、配置postfix使用此文件對客戶端進行檢查
編輯配置文件 vim /etc/postfix/main.cf 加入一行:
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
注:這裏的hash類型就表明了.db的文件,因此這裏不要寫後綴。
四、讓postfix從新載入配置文件
/etc/init.d/postfix reload
如今使用windows上的客戶端發郵件,就會看到被拒絕了;
實例演示(二):
拒絕所在域爲 huairen.com 的發件人發送郵件。
一、編輯 /etc/postfix/access 做爲客戶端檢查控制文件,添加以下一行:
huairen.com REJECT
二、將此文件轉換爲hash格式
postmap /etc/postfix/access
三、配置postfix使用此文件對客戶端進行檢查
編輯配置文件 vim /etc/postfix/main.cf 加入一行:
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/access
四、讓postfix從新載入配置文件
/etc/init.d/postfix reload
修改客戶端的發件人地址,我這裏使用的Outlook。 文件—帳戶設置—找到本身的郵箱地址—更改;
而後嘗試發一封郵件出去
能夠明顯看到拒絕信息,Sender address rejected:Access denied
實例演示(三):
拒絕全部郵件頭部用戶名爲tuchao的地址發郵件
一、添加一個訪問控制文件 /etc/postfix/mailhostdeny 做爲客戶端檢查控制文件,添加以下一行:
tuchao@ REJECT
二、將此文件轉換爲hash格式
postmap /etc/postfix/mailhostdeny
三、配置postfix使用此文件對客戶端進行檢查
編輯配置文件 vim /etc/postfix/main.cf 加入一行:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/mailhostdeny,permit_mynetworks,reject_unauth_destination
注:在smtpd_recipient_restrictions配置中,必需要有兩個內置參數permit_mynetworks,reject_unauth_destination,若是須要加入其餘參數,這兩個內置參數放到最後。
四、讓postfix從新載入配置文件
/etc/init.d/postfix reload
嘗試給tuchao@qupeiyin.net發送郵件
能夠看到收件人不符合要求被拒絕了
郵件別名的使用
編輯別名配置文件 /etc/aliases 加入以下兩行:
a: python
tuchao: 1183710107@qq.com
newaliases 執行此命令用於生成別名文件的hash格式,便於查找,每次修改過aliases文件都要執行。
說明:a:表示把全部發給本地a用戶的郵件,所有轉發給本地的python用戶,這裏a用戶不存在也不要緊服務器能識別到別名就能夠了。 把全部發給本地tuchao用戶的郵件。所有轉發至1183710107@qq.com。
給a用戶發送郵件測試
給tuchao用戶發郵件
過程當中遇到的錯誤記錄
錯誤1、-ERR Plaintext authentication disallowed on non-secure (SSL/TLS) connections.
RHEL5的dovecot都是不須要作任何修改,默認就可使用的。
RHEL6對dovecot作了比較嚴格的默認配置,若是使用默認配置,客戶端出現錯:
-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
設置/etc/dovecot/conf.d/10-mail.conf配置文件以下:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
設置完mail_location值後,須要重啓dovecot服務,同時須要建立相關的目錄,不然還會出現以下錯誤:
freebsd# telnet 192.168.50.24 110
Trying 192.168.50.24...
Connected to 192.168.50.24.
Escape character is '^]'.
+OK Dovecot ready. <2781.1.4d106bc3.JFuUEG+bO68ixpY2W1zihg==@rhel6.766.com>
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
在該用戶家目錄下建立相應的目錄:
su - tuchao
mkdir -p mail/.imap/INBOX
錯誤2、Temporary lookup failure
經過查看日誌發現是沒有aliase文件致使的,因此果斷的添加的這麼個文件,而後postmap一下就能夠了。
postmap /etc/aliases
2、構建基於虛擬用戶的虛擬域郵件系統架構
一、編譯安裝courier-authlib
官網:http://www.courier-mta.org/download.html#authlib
安裝依賴的程序包,若是使用MySQL認證的話,須要安裝MySQL。
yum install libtool openssl-devel tcl tcl-devel libart-lgpl libart-lgpl-devel expect libtool-ltdl libtool-ltdl-devel -y
編譯參數
./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認證
--with-redhat 實現基於redhat系統的優化,若是不是redhat系統不用加此參數;
--with-authmysqlrc 存放courier-authlib給mysql的配置文件路徑
--with-authdaemonrc 存放該服務的配置文件路徑
make && make install
可使用 --with-authdaemonvar=/var/spool/authdaemon 選項來指定進程套接字目錄路徑
編譯過程當中遇到的錯誤:
一、在./configure的時候出現錯誤 configure: error: invalid ltdl library directory: `/usr/lib64/'
筆者在centos6.5 64位的系統上試了屢次,也確保安裝了libtool-ltdl libtool-ltdl-devel,依舊不行。
思路:當什麼依賴的庫和程序都安裝了後,仍是提示找不到,這時候就要考慮依賴的庫與程序的版本不對應。
懷疑是courier-authlib 版本太新和系統庫不匹配,因而將courier-authlib0.66.3 下降版本到 0.66.1 , 0.65.0,0.64.0
這時候應該不是軟件版本問題,懷疑係統版本的庫與該程序不兼容。
嘗試將centos6替換爲centos5.11 X86_64 ,編譯courier-authlib0.64.0 沒有再出現此錯誤。
二、編譯出現錯誤 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
三、./configure 出現錯誤 configure: error: –with-authmysql specified but no mysqlclient.so
是由於本機上有兩個MySQL,卸載原來的MySQL就能夠了。
四、編譯出現錯誤 libltdl.so: could not read symbols: File in wrong format
是因爲64位機器的緣由,解決辦法在configure的選項中加上 LDFLAGS="-L/usr/lib64 -L/lib64"
參考文檔:http://wuliangxx.iteye.com/blog/656856
配置courier-authlib
創建配置文件,和configure 參數定義的名稱一致
--with-authmysqlrc=/etc/authmysqlrc
--with-authdaemonrc=/etc/authdaemonrc
cp /etc/authdaemonrc.dist /etc/authdaemonrc
cp /etc/authmysqlrc.dist /etc/authmysqlrc
編輯配置文件"/etc/authdaemonrc" 修改如下參數:
authmodulelist="authmysql"
authmodulelistorig="auauthmysql"
daemons=10
authdaemonvar=/usr/local/courier-authlib/var/spool/authdaemon
DEBUG_LOGIN=0
參數說明:
authmodulelist 指定支持認證的模塊列表
authmodulelistorig 指定源模塊列表
daemons 開啓的進程數,根據負載合理設置。
authdaemonvar 指定進程套接字目錄路徑
DEBUG_LOGIN 是否啓動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 指定數據庫名
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 指定用戶的全名保存在哪一個字段上
MYSQL_MAILDIR_FIELD concat(
'/var/mailbox/'
,maildir) 建立和用戶同名的郵件目錄
|
提供服務啓動腳本
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
啓動服務
service courier-authlib start
二、配置postfix支持虛擬域和虛擬用戶
一、編輯配置文件 /etc/postfix/main.cf 添加如下內容:
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 定義限制,一次只投遞一封郵件到一個用戶郵箱。
maildrop_destination_concurrency_limit =1 一次併發只投遞一封郵件
配額限制
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
message_size_limit 定義單個郵件的最大大小
virtual_mailbox_limit 每一個用戶的郵箱最大可用空間
配置postfix和courier-authlib
新建虛擬用戶郵箱所在的目錄,並將權限賦予postfix用戶。
mkdir /var/mailbox
chown -R postfix /var/mailbox
修改配置文件 /usr/lib/sasl2/smtpd.conf 沒有則創建,加入如下內容:
pwcheck_method:authdaemond
log_level:3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
authdaemond_path 此參數指定的路徑,是和/etc/authdaemonrc文件中authdaemonvar參數定義的路徑相對應。
下載extman源碼,使用其doc目錄下的extmail.sql和init.sql創建數據庫:
tar xf extman-1.1.tar.gz
cd extman-1.1/docs
mysql <extmail.sql
mysql <init.sql
複製須要的配置文件
cp mysql* /etc/postfix/
而且將複製過去的5個配置文件,根據實際mysql的賬號配置作相應的修改。
對於MySQL5.1之後的版本,須要將腳本extmail.sql使用以下命令進行語法修改:
sed -i 's/TYPE=MyISAM/ENGINE=InnoDB/g' extmail.sql
若是還出現錯誤 BLOB/TEXT column 'question' can't have a default value 則進入腳本修改SQL語句,將text字段的default參數刪除便可。
受權用戶extmail訪問extmail數據庫的權限
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」的幾個參數:myhostname,myorigin,mydomain,mydestination; 也能夠把mydestination 改爲本身須要的;
重啓postfix
service postfix restart
這是會發現沒法給以前配置的域收發郵件了,由於以前的參數咱們已經註釋了。 這時域的配置保存在exmail庫中的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
}
}
|
參數說明:
mail_location = maildir:/var/mailbox/%d/%n/Maildir
這兩個爲dovecot支持的兩個弘:
%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服務器是本地主機,若是mysql.sock文件路徑不是默認的/var/lib/mysql/mysql.sock,可使用host="socket" 來指定新位置:
connect = host=/tmp/mysql.sock dbname=extmail user=extmail password=extmail123
重啓dovecot服務
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 指定語言字符集的目錄
SYS_TEMPLDIR 指定臨時文件的目錄
SYS_HTTP_CACHE http是否要緩存
SYS_SMTP_HOST 指定smtp服務器
SYS_SMTP_PORT smtp服務端口號
SYS_SMTP_TIMEOUT 指定超時時間
SYS_SPAM_REPORT_ON 發現垃圾郵件是否報告
SYS_USER_LANG 指定語言支持
SYS_MAILDIR_BASE 指定用戶的郵筒文件夾
SYS_MYSQL_TABLE 指定在mysql中對應的表
SYS_MYSQL_ATTR_USERNAME 用戶名對應的字段屬性
SYS_MYSQL_ATTR_DOMAIN 域對應的字段屬性
SYS_MYSQL_ATTR_PASSWD 用戶密碼對應的字段屬性
SYS_AUTHLIB_SOCKET 指定courier-authlib socket文件位置
配置httpd
因爲extmail要進行本地郵件的投遞操做,故必須將運行httpd服務器用戶的身份修改成你的郵件投遞代理的用戶,若是打開apache的suexec功能,能夠實現虛擬主機運行身份的指定。 此例中的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功能,也可讓整個apache用postfix用戶跑
User postfix
Group postfix
修改cgi執行文件屬主爲apache服務運行的身份用戶
chown -R postfix.postfix /var/www/extsuite/extmail/cgi/
安裝Unix-Syslog解決依賴關係
能夠去http://search.cpan.org/搜索下載源碼包
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
建立用於保存session的目錄
mkdir /tmp/extman
chown postfix /tmp/extman/
修改cgi目錄屬主
chown -R postfix.postfix /var/www/extsuite/extman/cgi/
在httpd主配置文件中Extmail的虛擬主機部分,添加以下兩行:
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
重啓httpd服務器
service httpd restart
功能測試:
如今來訪問咱們的extmail
選擇登錄郵箱管理,空密碼賬號,直接點登錄跳到下一個界面:
初始密碼爲:extmail*123*
登錄以後可進入郵箱控制檯
如今登錄一個用戶來發送郵件
點擊發送後,QQ郵箱立馬就收到了。
一套郵件系統就基本實現了,這裏還沒加上反垃圾郵件功能和SSL加密功能。
這些功能可參考:
extmail官網:http://www.extmail.org/
本文出自 「突破溫馨區」 博客,請務必保留此出處http://tchuairen.blog.51cto.com/3848118/1686875