出錯提示:
Nov 6 20:07:06 ssn postfix/smtpd[4Array44]: connect from ssn[127.0.0.1]
Nov 6 20:07:10 ssn postfix/trivial-rewrite[4Array47]: warning: do not list domain test.edu.cn in BOTH mydestination and virtual_mailbox_domains
Nov 6 20:07:10 ssn postfix/trivial-rewrite[4Array47]: warning: do not list domain test.edu.cn in BOTH mydestination and virtual_mailbox_domains
Nov 6 20:07:10 ssn postfix/smtpd[4Array44]: NOQUEUE: reject: RCPT from ssn[127.0.0.1]: 550 5.1.1 : Recipient address rejected: User unknown in local recipient table; from= to= proto=ESMTP helo=
Nov 6 20:08:11 ssn postfix/smtpd[4Array44]: lost connection after RCPT from ssn[127.0.0.1]
解決方案:
此出錯提示說明系統域名(mydestination)與虛擬域名(virtual_mailbox_domains)配置有衝突。
默認postfix從mydestination和virtual_mailbox_domains兩個參數來肯定postfix須要接收哪些域的郵件。若是接收的郵件域與mydestination匹配,則使用系統賬號處理郵件;若是接收的郵件域與virtual_mailbox_domains匹配則使用虛擬賬號處理郵件。
此處mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,($mydomain=test.edu.cn)且virtual_mailbox_domains指定的mysql數據庫中也存在test.edu.cn域,這樣test1@test.edu.cn郵件就同時匹配兩種賬號,postfix不能判斷使用哪一種賬號去處理這個郵件,因此就出現了上述這種錯誤。
因此配置mydestination時,必定要考慮到不能與虛擬域有相同的域名。
查看默認mydestination值:
#postconf -d | grep mydestination
mydestination = $myhostname, localhost.$mydomain, localhost
//////////////////////////////////////////////////////////////////////////////////////mysql
出錯提示(在/var/log/messages中):
Nov 5 21:41:33 ssn postfix/smtpd[12356]: sql_select option missing
Nov 5 21:41:33 ssn postfix/smtpd[12356]: auxpropfunc error no mechanism available
解決方案:
去掉mysql的支持便可,由於sasl2直接調用courier-authlib來實現查找mysql並驗證用戶的,sasl2自己不須要mysql支持。linux
mail client端賬號配置錯誤
出錯提示:
Nov 6 1Array:56:2Array ssn postfix/smtpd[478Array]: connect from ssn[127.0.0.1]
Nov 6 1Array:56:33 ssn postfix/smtpd[478Array]: warning: SASL authentication failure: Password verification failed
Nov 6 1Array:56:33 ssn postfix/smtpd[478Array]: warning: ssn[127.0.0.1]: SASL PLAIN authentication failed: authentication failure
Nov 6 1Array:56:33 ssn postfix/smtpd[478Array]: warning: ssn[127.0.0.1]: SASL LOGIN authentication failed: authentication failure
Nov 6 1Array:56:37 ssn postfix/smtpd[478Array]: disconnect from ssn[127.0.0.1]
解決方案:
經過提示能夠看出是SMPT的認證出錯,若是smpt.conf配置文件沒有錯誤,就必定是登陸賬號出錯了。
默認mail client處配置(如Thunderbird)的登陸賬號是郵箱的全稱,如:sense5@test.edu.cn,而不是sense5,切記!!!
能夠經過如下配置來實現只使用用戶名而不是郵箱全稱來實現登陸,相似於mail.163.com:
#vi /usr/local/courier-authlib/etc/authlib/authmysqlrcweb
##NAME: MYSQL_DEFAULT_DOMAIN:0
#
# If DEFAULT_DOMAIN is defined, and someone tries to log in as ’user’,
# we will look up ’user@DEFAULT_DOMAIN’ instead.
#
#
# DEFAULT_DOMAIN example.com
DEFAULT_DOMAIN test.edu.cnsql
courier-authlib認證文件配置錯誤
配置:
#vi /usr/local/courier-authlib/etc/authlib/authmysqlrc
==============
MYSQL_HOME_FIELD homedir
MYSQL_MAILDIR_FIELD maildir
=============
/////////////////////////////////////////////////////////////////////數據庫
出錯提示:
Nov 6 1Array:54:42 ssn imapd: Connection, ip=[127.0.0.1]
Nov 6 1Array:54:42 ssn imapd: test1@test.edu.cn: chdir(test.edu.cn/test1/) failed!!
Nov 6 1Array:54:42 ssn imapd: error: No such file or directory
Nov 6 1Array:54:42 ssn imapd: LOGIN FAILED, user=test1@test.edu.cn, ip=[127.0.0.1]
Nov 6 1Array:54:42 ssn imapd: authentication error: No such file or directory
解決方案:
從出錯提示中能夠看出,imapd已經經過用戶的身份驗證,只是沒有找到用戶的郵件目錄。出錯提示中看出,imapd是直接從mysql中提取的用戶mailbox的相對路徑,authlib固然找不到正確的文件了,因此須要配置指定其絕對路徑。
#vi /usr/local/courier-authlib/etc/authlib/authmysqlrcapache
MYSQL_HOME_FIELD concat(’/var/mailbox/’,homedir)
MYSQL_MAILDIR_FIELD concat(’/var/mailbox/’,maildir)
以上兩個參數必定要按上邊的形式配置,不然就有可能出現這種錯誤。
concat(’/var/mailbox/’,homedir)與concat(’/var/mailbox/’,maildir)函數不能少,函數左邊爲預設的虛擬用戶mailbox存放路徑,此處爲/var/mailbox/。api
///////////////////////////////////////////////////////////////////
若是碰到:
gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS -DHAS_PCRE -g -O -I. -I../../include -DLINUX2 -c dict_mysql.c
dict_mysql.c:173:19: 錯誤:mysql.h:沒有那個文件或目錄
先安裝:
rpm -ivh mysql-devel-5.0.45-7.el5.i386.rpm
///////////////////////////////////////////////////////
錯誤信息2:make -f Makefile.in MAKELEVEL= Makefiles
(echo "# Do not edit -- this file documents how Postfix was built for your machine."; /bin/sh makedefs) >makedefs.tmp
No <db.h> include file found.
Install the appropriate db*-devel package first.
See the RELEASE_NOTES file for more information.
make: *** [Makefiles] 錯誤 1
make: *** [makefiles] 錯誤 2
緣由:沒裝berkeleyDB的開發庫,或者是指定路徑沒有找到,因此報這個錯了。若是是linux, 注意看有沒有db*-devel的rpm,或者libdb*-dev的deb(debian)若是是bsd,則看看有沒有裝db3/db4等包
解決方法:cd /mnt/cdrom/Server
安裝:rpm -ivh db4-devel-4.3.29-9.fc6.i386.rpm
///////////////////////////////////////////////////////////////////
錯誤4:error: Failed dependencies:
libpq.so.4 is needed by perl-DBD-Pg-1.49-2.el5.i386
解決方法:
安裝:rpm -ivh postgresql-libs-8.1.11-1.el5_1.1.i386.rpm
////////////////////////////////////////////////////////////////////
service dovecot startapp
若是中止失敗,報錯:Error: auth(default): dovecot-auth: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directorydom
Dovecot 會依賴MySQL-shared-
前面強制卸載系統自帶mysql時,把此包也刪掉了,所以手動裝上(版本和如今裝的mysql差很少,不然有可能不兼容)。
缺乏libmysqlclient.so.15,將新的so.15f複製到/use/lib裏面,能夠試試或者:
或者解決方法以下:
#echo "/usr/local/mysql/lib">>/etc/ld.so.confsocket
#ldconfig
下載:MySQL-shared-compat-5.0.92-1.rhel5.i386.rpm 安裝便可
////////////////////////////////////////////////////////////////////
若是碰到:
啓動 Dovecot Imap:Error: Can't write to log directory /var/log/dovecot: Permission denied
Fatal: Invalid configuration in /etc/dovecot.conf
這是selinux的問題:
vi /etc/sysconfig/selinux
修改SELINUX 爲 「disabled」
setenforce 0 讓selinux生效
//////////////////////////////////////////////////////////////////////
能夠訪問http://192.168.10.22/extman/了
碰到:驗證碼圖片不顯示時,須要先安裝這個rpm:
rpm -ivh perl-GD-2.35-1.el5.rf.i386.rpm
能夠配置extman/webman.cf中SYS_CAPTCHA_ON = 0 #取消校驗碼,1爲使用校驗碼,
//////////////////////////////////////////////////////////////////////
能夠訪問http://192.168.10.22/extmail/了
碰到:Unix::Syslog not found, please install it first! 錯誤時,須要先安裝這個rpm:
rpm -ivh perl-Unix-Syslog-0.100-1.2.el5.rf.i386.rpm
//////////////////////////////////////////////////////////
[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/postfix/cyrus-sasl-2.1.18'
make: *** [all] Error 2
解決辦法:將安裝目錄下mac/libdes/public/des.h拷貝到安裝根目錄
cp mac/libdes/public/des.h .
從新編譯安裝
####仍是報錯換個高版本的裝就行了
//////////////////////////////////////////////////////////////////////////
cd cyrus-sasl-2.1.25
./configure --prefix=/usr/local/sasl2 --disable-gssapi --disable-anon --disable-digest --enable-plain --enable-login --enable-sql --with-mysql=/usr/local/mysql/ --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/ --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
make
make install
若是在編譯過程(make)出現錯誤,如「client.c:64: error: static declaration of 'global_callbacks' follows non-static declaration saslint.h:112…」,須要加一個補丁程序,而後再執行編譯過程。
用vi在當前位置建立補丁文件,起名爲sasl.patch,其內容包括:
--- cyrus-sasl-2.1.20/lib/client.c~ 2003-11-11 11:26:06.000000000 -0500 +++ cyrus-sasl-2.1.20/lib/client.c 2005-05-31 22:34:14.000000000 -0400 @@ -61,7 +61,7 @@ static cmech_list_t *cmechlist; /* global var which holds the list */ -static sasl_global_callbacks_t global_callbacks; +sasl_global_callbacks_t global_callbacks; static int _sasl_client_active = 0; ////////////////////////////////////////////////////////////////////////// 日誌警告:warning: dict_nis_init: NIS domain name not set - NIS lookups disabled 解決:找到/etc/postfix/main.cf 文件中的alias_maps = hash:/etc/aliases 去掉# //////////////////////////////////////////////////////////////////////// #若是apache後臺日誌出現[error] [client 192.168.24.16] Prototype mismatch: sub Encode::IMAPUTF7::decode ($$;$) vs none at /var/www/extman/libs/Encode/IMAPUTF7.pm line 76. 此報錯不影響使用 解決方法: cp /var/www/extman/libs/Encode/IMAPUTF7.pm IMAPUTF7.pm.bak 拷貝新下載的IMAPUTF7.pm cp /mnt/win/postfix/Encode-IMAPUTF7-1.04.tar.gz /root/meng/ cd meng/ tar xzvf Encode-IMAPUTF7-1.04.tar.gz cp Encode-IMAPUTF7-1.04/lib/Encode/IMAPUTF7.pm /var/www/extman/libs/Encode/ //////////////////////////////////////////////////////////////////////////// 可能的錯誤及解決辦法 1.warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied 解決方法:檢查 authdaemond 的socket所在目錄及其父目錄的屬性是否對smtpd可讀。若是不可讀則出現這個問 題(permission 的問題)。 2.warning: SASL authentication failure: cannot connect to Courier authdaemond: No such file or directory 解決方法:檢查/usr/local/lib/sasl2/smtpd.conf ,看看是否有多寫一個空格,通常空格很難直觀的發現. 3,查看 /var/log/maillog ,報以下錯誤: Sep 17 16:04:56 redhat pop3d: chdir Maildir: No such file or directory Sep 17 16:04:57 redhat pop3d: Connection, ip=[192.168.2.1] Sep 17 16:04:57 redhat pop3d: chdir Maildir: No such file or directory 解決方法:authmysqlrc 文件裏 MYSQL_MAILDIR_FIELD 字段有空格。 4,warning: do not list domain test.com in BOTH mydestination and virtual_mailbox_domains 解決方法:將/etc/postfix/main.cf 文件內mydestination設置爲空便可,或徹底註釋也行. mydomain 和 myhostname, 這2 個項的值不要設置成同樣. 5,fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix mynetworks =127.0.0.0/8,10.1.1.0/24 解決方法:postconf -e mail_owner=postfix 6,fatal: file /etc/postfix/main.cf: parameter mail_owner: unknown user name value: postfix myhostname = mail.test.com mydomain = test.com myorigin = test.com inet_interfaces = all 解決方法:配置/etc/postfix/main.cf 中的inte--inteface=all 7, fatal: open database /etc /aliases.db: No such file or directory 解決方法:執行:newaliase 8,warning: dict_nis_init: NIS domain name not set - NIS lookups disabled 解決方法:找到/etc/postfix/main.cf 文件中的alias_maps = hash:/etc/aliases, nis:mail.aliases 去掉其後便可 9, warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms fatal: no SASL authentication mechanisms warning: process /usr/libexec/postfix/smtpd pid 16829 解決方法: # ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 /////////////////////////////////////////////////////////////////////////////// 編譯安裝postfix報錯:bin/postconf: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory 處理:cp /usr/local/mysql/lib/libmysqlclient.so.15 /usr/lib ////////////////////////////////////////////////////////////////////////////// 安裝sasl 報錯 若是出現下面的錯誤: auth_getpwent.c:48:20: des.h: No such file or directory make[3]: *** [auth_getpwent.o] Error 1 make[3]: Leaving directory `/tmp/cyrus-sasl-2.1.22/saslauthd’ make[2]: *** [all] Error 2 make[2]: Leaving directory `/tmp/cyrus-sasl-2.1.22/saslauthd’ make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/tmp/cyrus-sasl-2.1.22’ make: *** [all] Error 2 修改/tmp/cyrus-sasl-2.1.22/saslauthd/Makefiles內的變量CFLAGS添加-I/opt/openssl/include/openssl 或者直接 mail~#cp /tmp/cyrus-sasl-2.1.22/mac/libdes/public/des.h /tmp/cyrus-sasl-2.1.22/ mail~#make mail~#make install /////////////////////////////////////////////////////////////////////////////////// Jul 30 15:02:32 mail authdaemond: Authenticated: clearpasswd=extmail, passwd=$1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0 Jul 30 15:02:32 mail pop3d: postmaster@extmail.org: chdir(/home/mailusers/extmail.org/postmaster) failed!! Jul 30 15:02:32 mail pop3d: error: No such file or directory Jul 30 15:02:32 mail pop3d: LOGIN FAILED, user=postmaster@extmail.org, ip=[127.0.0.1] Jul 30 15:02:32 mail pop3d: authentication error: No such file or directory 解決:手動新建郵箱文件夾 mkdir -p /home/mailusers/extmail.org/postmaster/Maildir/cur