歡迎您光臨本站 註冊首頁

Slackware基於POSTFIX+courier-authlib+cyrus-sasl+Courier-IMAP+maildrop+..._1

最新版POSTFIX +courier-authlib+cyrus-sasl+Courier-IMAP +maildrop +postfixadmin 安裝記錄
(2007年11月4日更新版)

轉載請註明出處:http://windychan.cublog.cn 作者:Windy.Chan

本文參考文獻有:

1,POSTFIX 2.2.10+VDA補丁+courier-authlib 0.58+cyrus-sasl 2.1.22+Courier-IMAP 4.1.1+maildrop 2.0.2+postfixadmin 2.1.0 安裝記錄_microsea

2,postfix all (http://marion.cublog.cn)

友請提醒I:如果你在安裝或運行時出現一些錯誤時,請留意每部分的特別提示或集中閱讀本文最後的一部所提及的常見安裝/首次使用中的故障解決。

友請提醒II:本文還在反覆測試驗證中,不足之處,敬請原諒.

友請提醒III:本文僅供參考學習,如您按本文或本文所引用文章操作時,對您系統造成的任何損害或損失,都與本人以及本文所引用文章的作者無關。

===========================================================

系統環境:

slackware12 (6 SMP PREEMPT Tue Jan 23 00:27:40 AKST 2007 i686 unknown unknown GNU/Linux)相關軟體:

courier-authlib-0.60.2

courier-imap-4.2.1

cyrus-sasl-2.1.22 (slackware 12自帶的2.1.21,建議刪除)

maildrop-2.0.4

postfix-2.4.6

postfixadmin-2.1.0

Mysql 4.1.22

Apachen (httpd.2.4.4)

php-4.4.2/

可選軟體:

phpMyAdmin - 2.8.0.3

===========================================================

安裝前準備Postfix Mail組件前的準備:

1,郵件投遞原理

推薦文章:Mail Server 的相關知識(http://linux.vbird.org/linux_server/0380sendmail.php#theory)---鳥哥的 Linux 與 ADSL 私房菜

2,安裝Mysql+Apache+Php+PhpMyadmin

推薦文章: linux下面apache2.0.52+php5+gd2+mysql(http://blog.chinaunix.net/u/9951/showart_60559.html) --- 網路神話之伺服器管理

首先安裝msyql (我的系統中已經配置好了mysql 4.1.22,安裝路徑為/usr/local/mysql), 因為後面的 courier-authlib安裝中需要指定認證方式為mysql,編時需要用戶到libmysqlclient.so(注意下面的特別提示)。

Apache的DocumentRoot路徑為: /usr/local/apache/htdocs。


1.安裝courier-authlib
下載地址:
你可以通過下列地址查碼安裝代碼: http://sourceforge.net/projects/courier/
安裝時最新版本 0.60.2 release.

安裝之前添加postfix和maildrop相關的用戶&用戶組

root@net-server:/# groupadd postfix
root@net-server:/# groupadd postdrop
root@net-server:/# useradd postfix --g postfix -G postdrop
root@net-server:/# groupadd vmail
root@net-server:/# useradd vmail -g vmail -d  /home/mail
root@net-server:/# cat /etc/passwd
     postfix:x:1009:1000::/home/postfix:
     vmail:x:1010:1002::/home/mail:
####  特別提示 1:這個主要是設定郵件管理帳號/進程啟動帳號. 記住postfix和pstdrop組都中包含用戶postfix, vmail組中包括vmail用戶,你可以通過直接編/etc/group文件,把這些用戶加入相關的組。同時,請記住這裡的vmail的GI--1010D和UID--1002,在下面文章的多處針使用到).

root@net-server:/# mkdir /home/mail
root@net-server:/# chown vmail:vmail /home/mail
root@net-server:/# chmod -R 775 /home/mail
root@net-server:/#  cd /usr/src/
root@net-server:/usr/src/# tar jvxf courier-authlib-0.60.2.tar.bz2
root@net-server:/usr/src/#cd /usr/src/courier-authlib-0.60.2

./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --without-authuserdb --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --with-authdaemonvar=/var/spool/authdaemon --without-authcustom --with-authmysql --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql  --with-authmysqlrc=/usr/local/courier-authlib/etc/authmysqlrc --with-mailuser=vmail --with-mailgroup=vmail --with-authdaemonrc=/usr/local/courier-authlib/etc/authdaemonrc CHOST="i686-pc-linux-gnu" CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" CXXFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
(以上是同一條命令)

root@net-server:/usr/src/courier-authlib-0.60.2# make
root@net-server:/usr/src/courier-authlib-0.60.2# make install


#### 特別提示2.如果courier-authlib安裝到非標準位置(例如安裝到/usr/local下,我的安裝路徑是 /usr/local/authlib),一定記得在./configure時增加--without-stdheaderdir,這樣以後在編譯Courier-IMAP和maildrop的時候,不用特別指定courier-authlib的庫文件位置
#### 特別提示3,檢查相關軟體或庫文件路徑,這裡可能與你實際情況不同:比如 mysql-include,我的是/usr/local/mysql/include/ ,mysql-libs路徑是/usr/local/mysql/lib。

#### 特別提示4,編譯出現過程出現如下錯誤(其實我的mysql 4.1.22之前一直正常使用的):,這是因為在編譯指錯了--with-mysql-includes的路徑。
authmysql.h:8:26: mysql.h: No such file or directory
authmysql.h:9:27: errmsg.h: No such file or directory
make: *** Error 1
make: Leaving directory `/usr/src/courier-authlib-0.60.2'
make: *** Error 1
make: Leaving directory `/usr/src/courier-authlib-0.60.2'
make: *** Error 2

後來用locate  mysql.h找到此文件在/usr/local/mysql/include/mysq/中。我也很鬱悶,其它軟體在編譯,像這樣的路徑完全是可能寫成/usr/local/mysql/include.不知道為什麼,編譯courier-authlib卻不行。看來不能偷懶哦,改為--with-mysql-includes=/usr/local/mysql/include/mysql  --with-mysql-libs=/usr/local/mysql/lib/mysql  就可以了.

root@net-server:/# cd /usr/local/courier-authlib/etc/
root@net-server:/usr/local/courier-authlib/etc# cp  authmysqlrc.dist authmysqlrc
root@net-server:/usr/local/courier-authlib/etc# cp authdaemonrc.dist authdaemonrc

root@net-server:/usr/local/courier-authlib/etc#  vi authdaemonrc

authmodulelist="authmysql" <--使用Mysql用戶認證
authmodulelistorig="authmysql"  <--使用Mysql用戶認證
daemons=5  <--已經存在, 沒有就增加
authdaemonvar=/var/spool/authdaemon   <--authlib會自己設定好此路徑。非標準安裝路徑應為
                                                           ###   /var/安裝目錄名/spool/authdaemon
DEBUG_LOGIN=0   <--已經存在, 沒有就增加, 2 為詳細Debug模式,可以看更詳細的日誌。
DEFAULTOPTIONS=""   <--已經存在, 沒有就增加
LOGGEROPTS=""   <--已經存在, 沒有就增加


root@net-server:/usr/local/courier-authlib/etc# vi  authmysqlrc

MYSQL_SERVER               192.168.1.89   <--mysql伺服器名或IP地址
MYSQL_USERNAME          mysql        <--mysql用戶名
MYSQL_PASSWORD          pwd06a   <--mysql用戶名密碼
MYSQL_SOCKET            /tmp/mysql.sock1    <--mysql SOCKET,請根據你的實情而定
MYSQL_PORT              3306  <--mysql 埠號,請根據你的實情而定
MYSQL_OPT                0
MYSQL_DATABASE          postfix
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
##MYSQL_CLEAR_PWFIELD     clear_password   <---0.60.2 release.沒有此欄位,取消
MYSQL_UID_FIELD         1010   <--mysql表中, 管理authlib用戶的UID.前面我們就用的vmail
MYSQL_GID_FIELD         1002  <--mysql表中, 管理authlib用戶的GID.前面我們就用的vmail
###   vmail---->UID:1010, GID:1002
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        concat('/home/mail/',maildir)
MYSQL_NAME_FIELD          name
MYSQL_MAILDIR_FIELD    concat('/home/mail/',maildir)
MYSQL_QUOTA_FIELD       quota
MYSQL_WHERE_CLAUSE     active='1'

啟動courier-authlib
root@net-server:/# cp /usr/src/courier-authlib-0.60.2/courier-authlib.sysvinit   /etc/rc.d/courier-authlib.sysvinit

root@net-server:/# /etc/rc.d/courier-authlib.sysvinit start

2.安裝 cyrus-sasl-2.1.22:
[其實,在安裝slackware12后,已經自動安裝了,cyrus-sasl-2.1.21,強烈建議參考下文重新進行編譯安裝,我用的是2.1.22源包安裝)

官文網址 http://asg.web.cmu.edu/sasl/
參考下載地址:ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz

刪除以前的rpm包以及相關目錄(我以前是安裝Slackware時安裝的2.1.21,只是沒有按需要編譯,所以我沒有刪除,只是手動刪除了一些相關文件)

rpm -e --nodeps cyrus-sasl-2.1.15 cyrus-sasl-plain-2.1.15 cyrus-sasl-md5-2.1.15 cyrus-sasl-devel-2.1.15
rm -rf /usr/lib/sasl
rm -rf /usr/lib/sasl2

root@net-server:/#  cd /usr/src/
root@net-server:/usr/src#  tar xvzf cyrus-sasl-2.1.22.tar.gz
root@net-server:/usr/src# cd  cyrus-sasl-2.1.22
root@net-server:/usr/src/cyrus-sasl-2.1.22#
root@net-server:/usr/src/cyrus-sasl-2.1.22# ./configure --prefix=/usr/local/cyrus-sasl --with-mysql=/usr/local/mysql --disable-sample --disable-saslauthd --disable-pwcheck --disable-cram --disable-digest --disable-krb4 --disable-gssapi --disable-anon --enable-plain --enable-login --enable-sql --disable-ntlm --disable-otp --disable-srp --disable-srp-setpass --with-authdaemond=/var/spool/authdaemon/socket --with-mysql-includes=/usr/local/mysql/include/mysql --with-mysql-libs=/usr/local/mysql/lib/mysql
(以上是同一條命令)
root@net-server:/usr/src/cyrus-sasl-2.1.22# make
root@net-server:/usr/src/cyrus-sasl-2.1.22# make install
root@net-server:/usr/src/cyrus-sasl-2.1.22# ln -s /usr/local/cyrus-sasl/lib/sasl2 /usr/lib/sasl2

添加以下兩行到"/etc/ld.so.conf",並執行ldconfig命令.
/usr/local/cyrus-sasl/lib/sasl2
/usr/local/cyrus-sasl/lib

關閉或刪除下列文件,也避免與新版2.1.22中的文件混淆。
root@net-server:/# mv /usr/lib/libsasl2.a /usr/lib/libsasl2.a.OFF
root@net-server:/# mv /usr/lib/libsasl2.la /usr/lib/libsasl2.la.OFF
root@net-server:/# mv /usr/lib/libsasl2.so.2.0.19 /usr/lib/libsasl2.so.2.0.19.OFF
root@net-server:/# mv /usr/lib/sasl2 /usr/lib/sasl2.OFF
root@net-server:/# rm /usr/lib/libsasl2.so
root@net-server:/# rm /usr/lib/libsasl2.so.2

root@net-server:/# ln -sv /usr/local/cyrus-sasl/lib/* /usr/lib

postfix 2.3以後的版本(本文是安裝postfix-2.4.6)會分別在/usr/local/lib和/usr/local/include中搜索sasl庫文件及頭文件,故還須將其鏈接至此目錄中:

# ln -sv /usr/local/cyrus-sasl/lib/* /usr/local/lib
# ln -sv /usr/local/cyrus-sasl/include/sasl/* /usr/local/include

創建運行時需要的目錄並調試啟動

# mkdir -pv /var/state/saslauthd
# /usr/local/cyrus-sasl/sbin/saslauthd -a shadow pam -d

啟動並測試
# /usr/local/cyrus-sasl/sbin/saslauthd -a shadow pam
# /usr/local/cyrus-sasl/sbin/testsaslauthd -u root -p root用戶密碼

設置開機自動啟動
# echo "/usr/local/cyrus-sasl/sbin/saslauthd -a shadow pam"  >>/etc/rc.d/rc.local


vi /usr/local/cyrus-sasl/lib/sasl2/smtpd.conf  <----我的系統中沒有此文件,locate與找不出來,我是自己建立該文件。
pwcheck_method: saslauthd
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket

注意,這個文件的編輯不要多寫一個空格,否則會出現smtp驗證不過的問題

3.安裝postfix (我是用postfix-2.4.6)

下載地址:
http://www.postfix.org

root@net-server:/usr/src# tar xvzf postfix-2.4.6.tar.gz
root@net-server:/usr/src# cd  postfix-2.4.6

root@net-server:/usr/src/postfix-2.4.6# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/cyrus-sasl/include/sasl/'  'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/cyrus-sasl/lib/sasl2 -lsasl2'

(以上是同一條命令)

root@net-server:/usr/src/postfix-2.4.6# make
root@net-server:/usr/src/postfix-2.4.6# make install
按照以下的提示輸入相關的路徑([]號中的是預設值,」]」后的是輸入值)
  install_root: [/] /
  tempdir: /tmp
  config_directory: /etc/postfix
  daemon_directory: /usr/local/postfix/libexec
  command_directory: /usr/local/postfix/sbin
  queue_directory:
  sendmail_path:
  newaliases_path:
  mailq_path:
  mail_owner:
  setgid_group:
html_directory: /var/www/postfix_html
manpages: /usr/local/postfix/man
readme_directory:


生成別名二進位文件,這個步驟如果忽略,會造成postfix效率極低:
root@net-server:/# ln -s /etc/postfix/aliases /etc/aliases
root@net-server:/#  newaliases

設定postfix, main.cf是主配置文檔
root@net-server:/# vi /etc/postfix/main.cf
myhostname = mail.windychan.com    <----伺服器主機名
mydomain = windychan.com   <----域名
myorigin = $mydomain  <----我的域名
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain   <# mydestination 參數指定這個機器考慮本身最終目的Domain的列表。
# These domains are routed to the delivery agent specified with the local_transport parameter setting. By default, that is the UNIX compatible delivery agent that lookups all recipients in /etc/passwd  and /etc/aliases or their equivalent.
# local_transport 參量設置這些Doamin被路由到交付代理(DA )。默認情況, UNIX 兼容交付代理(DA )在/etc/passwd 和/etc/aliases  或他們的等值中查尋所有收件人。
alias_maps = hash:/etc/aliases
home_mailbox = Maildir/
mynetworks = 192.168.148.0/24, 127.0.0.0/8   <----我的網路
啟動postfix

root@net-server:/# /usr/local/postfix/sbin/postfix start
可看到下列進程已經啟動
root      8240  0.2  0.2   3476  1164 ?        Ss   16:08   0:00 /usr/local/postfix/libexec/master
postfix   8241  0.1  0.2   3556  1148 ?        S    16:08   0:00 qmgr -l -t fifo -u
postfix   8242  0.0  0.2   3516  1112 ?        S    16:08   0:00 pickup -l -t fifo -u
設置開機自動啟動
root@net-server:/# echo "/usr/local/postfix/sbin/postfix start "  >>/etc/rc.d/rc.local

日誌文件: /var/log/maillog
通常可以通過檢查日誌文件來解決許多問題哦.
####


4、為postfix開啟基於cyrus-sasl的認證功能

使用以下命令驗正postfix是否支持cyrus風格的sasl認證,如果您的輸出為以下結果,則是支持的:
root@net-server:/# /usr/local/postfix/sbin/postconf -a   <---顯示如下
cyrus
dovecot

root@net-server:/# /etc/postfix/main.cf

添加以下內容:

############################CYRUS-SASL I ############################

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_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
############################END CYRUS-SASL I ############################
特別提示
#########vi /usr/lib/sasl2/smtpd.conf  ---<注意檢查此文件的真實路徑,我這樣輸入,是因為我在
                                                                     ###前面用過 ln sv //usr/local/cyrus-sasl/lib/* /usr/lib
添加如下兩行(如已經存在,就請忽略):

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

讓postfix重新載入配置文件
root@net-server:/#/usr/local/postfix/sbin/postfix reload
配置Mysql項,在main.cf 中添加以下內容:

root@net-server:/# vi /etc/postfix/main.cf


#####=======MySQL===============####
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /home/mail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 102400000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1010   <----請注意實際情況
virtual_uid_maps = static:1010 <----請注意實際情況
virtual_gid_maps = static:1002   <----請注意實際情況
virtual_transport = virtual
#"virtual_gid_maps"和"virtual_uid_maps"是vmail用戶的gid和uid, "virtual_minimum_uid"應當###"virtual_uid_maps",
##"virtual_mailbox_limit"是每個郵箱的大小.
#####=======End MySQL===============####
######===============Quota================#######

virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
#virtual_trash_count=yes
#virtual_trash_name=.Trash

######===============End Quota================#######

編輯cf配置文件

root@net-server:/# vi /etc/postfix/mysql_virtual_alias_maps.cf  

--->注意下面的一些設定應該與 vi /usr/local/courier-authlib/etc/authmysqlrc一致
user = mysql
password = pwd06a
hosts = 192.168.148.93
dbname = postfix
table = alias
select_field = goto
where_field = address
additional_conditions = AND active = '1'

##SQL_SERVER            192.168.148.93   <---相關authmysqlrc 中的設定
##MYSQL_USERNAME          mysql   <---相關authmysqlrc 中的設定
##MYSQL_PASSWORD          pwd06a   <---相關authmysqlrc 中的設定
##MYSQL_DATABASE          postfix   <---相關authmysqlrc 中的設定



######===============End============#######

root@net-server:/# vi /etc/postfix/mysql_virtual_domains_maps.cf
user = mysql
password = pwd06a
hosts = 192.168.148.93
dbname = postfix
table = domain
select_field = description
where_field = domain
additional_conditions = AND active = '1'

######===============End============#######
=================================

root@net-server:/# vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = mysql
password = pwd06a
hosts = 192.168.148.93
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
additional_conditions = AND active = '1'

######===============End============#######

root@net-server:/# vi /etc/postfix/mysql_virtual_limit_maps.cf
user = mysql
password = pwd06a
hosts = 192.168.148.93
dbname = postfix
table = mailbox
select_field = quota
where_field = username
additional_conditions = AND active = '1'
######===============End============#######
啟動和停止postfix服務:

root@net-server:/# /usr/local/postfix/sbin/postfix stop
root@net-server:/# /usr/local/postfix/sbin/postfix start

重啟動courier-authlib 傷務:

root@net-server:/# cp /usr/src/courier-authlib-0.60.2/courier-authlib.sysvinit   /etc/rc.d/courier-authlib.sysvinit    ###<-----前面已經運行執過,請跳過

root@net-server:/# /etc/rc.d/courier-authlib.sysvinit restart


特別提示:在發信過程可能會出現:
May 18 16:19:51 bb06 postfix/cleanup: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
處理方法:
root@net-server:/usr/local/courier-authlib/etc# vi  authmysqlrc
MYSQL_SOCKET            /tmp/mysql.sock1    <--設定為mysql SOCKET的真實路徑,可以通過檢查my.cnf得到確認。

[ 本帖最後由 windychan 於 2007-11-6 19:12 編輯 ]
《解決方案》

Slackware基於POSTFIX+courier-authlib+cyrus-sasl+Courier-IMAP+maildrop+..._2

最新版POSTFIX +courier-authlib+cyrus-sasl+Courier-IMAP +maildrop +postfixadmin 安裝記錄
(2007年11月4日更新版)

轉載請註明出處:http://windychan.cublog.cn 作者:Windy.Chan

本文參考文獻有:

1,POSTFIX 2.2.10+VDA補丁+courier-authlib 0.58+cyrus-sasl 2.1.22+Courier-IMAP 4.1.1+maildrop 2.0.2+postfixadmin 2.1.0 安裝記錄_microsea

2,postfix all (http://marion.cublog.cn)

友請提醒I:如果你在安裝或運行時出現一些錯誤時,請留意每部分的特別提示或集中閱讀本文最後的一部所提及的常見安裝/首次使用中的故障解決。

友請提醒II:本文還在反覆測試驗證中,不足之處,敬請原諒.

友請提醒III:本文僅供參考學習,如您按本文或本文所引用文章操作時,對您系統造成的任何損害或損失,都與本人以及本文所引用文章的作者無關。

===========================================================
5.編譯安裝安裝Courier-IMAP
我選擇的是courier-imap-4.2.1#
你可以通過下列地址查碼安裝代碼: http://sourceforge.net/projects/courier/

root@net-server:/#  cd /usr/src/
root@net-server:/usr/src#  tar xvzf courier-imap-4.2.1.tar.gz
root@net-server:/usr/src# cd  courier-imap-4.2.1
root@net-server:/usr/src/courier-imap-4.2.1# ./configure --prefix=/usr/local/courier-imap --enable-unicode --disable-root-check --with-trashquota --without-ipv6 CPPFLAGS='-I/usr/local/courier-authlib/include' COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
###注意,以上configure為是一條命令
特別提示:
CPPFLAGS='-I/usr/local/courier-authlib/include'    如果編譯courier-authlib沒有安裝在默認路徑,必須指定這個,如果之前編譯courier-authlib加了--without-stdheaderdir,就不需要指定了.
沒有加COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'會出現下列:
checking for courierauthconfig... no
configure: WARNING: === Courier authentication library not found.
configure: WARNING: === You need to download and install
configure: WARNING: === http://www.courier-mta.org/download.php#authlib first.
configure: WARNING: === If courier-authlib is installed in a non-default
configure: WARNING: === directory, set the COURIERAUTHCONFIG environment
configure: WARNING: === variable to the full path to the courierauthconfig
configure: WARNING: === binary and rerun this configure script.
configure: WARNING:
configure: error: courierauthconfig not found
export  COURIERAUTHCONFIG=/usr/local/courier-authlib/bin/courierauthconfig
再執行configure.

root@net-server:/usr/src/courier-imap-4.2.1#make
root@net-server:/usr/src/courier-imap-4.2.1#make install
root@net-server:/#cp /usr/local/courier-imap/etc/imapd.dist  /usr/local/courier-imap/etc/imapd
root@net-server:/#cp /usr/local/courier-imap/etc/imapd-ssl.dist  /usr/local/courier-imap/etc/imapd-ssl
root@net-server:/#cp /usr/local/courier-imap/etc/pop3d.dist  /usr/local/courier-imap/etc/pop3d
root@net-server:/#cp /usr/local/courier-imap/etc/pop3d-ssl.dist  /usr/local/courier-imap/etc/pop3d-ssl

配置Courier-IMAP,為用戶提供pop3服務:
root@net-server:/#vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=yes
root@net-server:/#vi /usr/local/courier-imap/etc/imapd
IMAPDSTART=YES
從源文目錄中/usr/src/courier-imap-4.2.1/courier-imap.sysvinit文件複製到啟動目錄(/etc/rc.d/)中,生成啟動文件。

root@net-server:/# cp /usr/src/courier-imap-4.2.1/courier-imap.sysvinit /etc/rc.d/rc.courier-imapd
root@net-server:/# chmod 755 /etc/rc.d/rc.courier-imapd
root@net-server:/# echo "/etc/rc.d/rc.courier-imapd start" >> /etc/rc.d/rc.local


接下來重新配置SMTP 認證,編輯 /usr/local/cyrus-sasl/lib/sasl2#/smtpd.conf ,確保其為以下內容:
pwcheck_method: saslauthd
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/var/spool/authdaemon/socket    <---注意你的實際情況



現在創建郵箱(手動)。

root@net-server:/#mkdir -p /home/mail   ###<----若前面已經建立,請跳過
root@net-server:/#chown vmail.vmail /home/mail  ###<----若前面已經建立,請跳過
root@net-server:/#su - vmail  ###<----切換到vmail用戶 (當然,也可能直接用root用戶完成下面
  ###<----3條命令行,完成之後,再用chown等命令修改其所有者就可行了).

vmail@net-server:~$  cd /home/mail
vmail@net-server:~$ mkdir windychan.com
vmail@net-server:~$ mkdir windychan.com/Maildir

root@net-server:/# cd /home/mail/windychan.com
root@net-server:/home/mail/windychan.com#  /usr/local/courier-imap/bin/maildirmake  jackwang
# chown -R vmail.vamil /home/mailwindychan.com/jackwang
# chmod -R g=s  /home/mailwindychan.com/jackwang




6.安裝maildrop
maildrop-2.0.4.tar.bz2
你可以通過下列地址查碼安裝代碼: http://sourceforge.net/projects/courier/

目前最新版本:2.0.4

root@net-server:/usr/src# tar xvjf maildrop-2.0.4.tar.tar
root@net-server:/usr/src#ln -s /usr/local/courier-authlib/bin/courierauthconfig /usr/bin/courierauthconfig
root@net-server:/usr/src#cd   maildrop-2.0.4
root@net-server:/usr/src/maildrop-2.0.4#./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users='root vmail' --enable-syslog=1 --enable-maildirquota --enable-maildrop-gid=1010 --enable-maildrop-uid=1002 --with-trashquota --with-dirsync

root@net-server:/usr/src/maildrop-2.0.4# make
root@net-server:/usr/src/maildrop-2.0.4# make install

特別提示1,確認vmail用戶的gid和uid, --enable-maildrop-gid=1001 --enable-maildrop-uid=1001就引用到.我這裡為vmail:x:1010:1002::/home/mail:(gid=1002,uid=1010)
特別提示2,由於我們在執行configura時沒有用--prefix=path,所以相關的安裝文件/庫文件都在
`/usr/local/bin' 和 `/usr/local/lib' 等目錄. maildrop建議不要自定義目錄安裝,可以減少不必要的麻煩,刪除很方便:直接在已經編譯的源代碼目錄 make uninstall 就行

特別提示3,源碼安裝的,將courierauthconfig 命令鏈接到/usr/bin里,假設裝在:
/usr/local/courier-authlib/bin/courierauthconfig,則:
ln -s /usr/local/courier-authlib/bin/courierauthconfig /usr/bin/courierauthconfig
這樣編譯出來的maildrop才會ourier Authentication Library extension enabled.


否則會出錯,大概提示如下

May 19 09:19:14 bb06 postfix/pipe: 3707B298212: to=<root@net-server>, relay=maildrop, delay=0, status=bounced (user unknown. Command output: Invalid user specified. )
May 19 09:19:14 bb06 postfix/qmgr: 3707B298212: removed
說明maildrop沒有編譯支持ourier Authentication Library extension enabled.

檢驗安裝版本
root@net-server:/usr/src/maildrop-2.0.4# /usr/local/bin/maildrop -v
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.   
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.


配置main.cf和master.cf使postfix調用maildrop
========================
vi /etc/postfix/main.cf

virtual_transport = maildrop  <---注意檢查不要重複設定virtual_transport
maildrop_destination_recipient_limit = 1  

========================
vi /etc/postfix/master.cf   <----原來已經有,只要取消其註釋符#就行
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension}${nexthop}

    58  maildrop  unix  -       n       n       -       -       pipe
    59  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension}${nexthop}
調試maildrop是否正常工作

從其他郵箱發一份郵件到你新建立的email地址,看到類似log記錄
May 10 07:21:05 mail postfix/pipe: 78DCC156AE7: to=<frank@domain.com>, relay=maildrop, delay=0, status=sent

(domain.com)
看到relay=maildrop 並且log沒有報錯,則說明maildrop已經正常工作

特別提示:

1. 編譯安裝的時候出現以下報錯configure: error: pcre.h not found - install PCRE from www.pcre.org
請安裝pcre-devel包

2,安裝maildrop並配置后,postfix不能啟動了,檢查日誌 /var/log/mail,出如下提示.
Nov  2 10:58:57 net-server postfix/postfix-script: starting the Postfix mail system
Nov  2 10:58:57 net-server postfix/master: fatal: /etc/postfix/master.cf: line 100: bad transport type: user=vmail
再檢查/etc/postfix/ master.cf的100行,沒有錯了,再回到原來設定"flags=DRhu user=vmail argv=/usr/local/bin/maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension}${nexthop}"出沒發現錯識,後來查詢一些資料后,才知道定義transport的時候,即如上兩行中的第二行,其參數行必須以空格開頭,否則會出錯。


7.編譯安裝postfixadmin
下載地址:Download postfixadmin-2.1.0.tgz

http://sourceforge.net/projects/postfixadmin/
目前最新版本是2.1.0

root@net-server:/usr/src# tar xvzf postfixadmin-2.1.0.tgz
root@net-server:/usr/src# mv postfixadmin-2.1.0 /usr/local/apache/htdocs/postfixadmin
root@net-server:/usr/src# cd  /usr/local/apache/htdocs/postfixadmin/
root@net-server:/usr/local/apache/htdocs/postfixadmin#

INSTALL.TXT文件建議改文件屬性: <---請注意這些文件經過移動文件夾后的實際路徑.
### 我這裡為/usr/local/apache/htdocs/postfixadmin#
   $ cd /usr/local/www/postfixadmin
  $ chmod 640 *.php *.css
  $ cd /usr/local/www/postfixadmin/admin/
  $ chmod 640 *.php .ht*
  $ cd /usr/local/www/postfixadmin/images/
  $ chmod 640 *.gif *.png
  $ cd /usr/local/www/postfixadmin/languages/
  $ chmod 640 *.lang
  $ cd /usr/local/www/postfixadmin/templates/
  $ chmod 640 *.tpl
  $ cd /usr/local/www/postfixadmin/users/
  $ chmod 640 *.php


設置完后無法打開網頁,我再加上了read屬性
root@net-server:/usr/local/apache/htdocs# chmod +r postfixadmin/ -R
導入資料庫
mysql -uroot -p  < DATABASE_MYSQL.TXT

設置PostfixAdmin的資料庫連接
root@net-server:/usr/local/apache/htdocs/postfixadmin# cp config.inc.php.sample config.inc.php
root@net-server:/usr/local/apache/htdocs/postfixadmin# vi config.inc.php
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'net-server.windychan.com';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin';
訪問:
http://域名/postfixadmin/
特別提示:
注:第一次訪問時,要做相關的設定(如mail domain, domain admin等),一定要設備domain admin,這樣以後才能管理。完成後,請將/usr/local/apache/htdocs/postfixadmin/中的setup.php更名,這樣以後就直接進入管理界面了。

############################################################################################################################################################################
常見安裝/首次使用中的故障解決。
###特別提示1.
Nov  2 13:22:38 net-server postfix/master: warning: process /usr/local/postfix/libexec/smtpd pid 12486 exit status 1
Nov  2 13:22:38 net-server postfix/master: warning: /usr/local/postfix/libexec/smtpd: bad command startup -- throttling
處理方法:修改mail.cf中virtual_transport = virtual 為 virtual_transport = maildrop

###特別提示2.
postfix/trivial-rewrite: warning: do not list domain windychan.com in BOTH mydestination and virtual_mailbox_domains
方法1 ,mydestination會自動根據機器名生成,因此如果不希望使用它的話,應將其設為空:postconf -e mydestination=
方法2,原來是系統域名與虛擬帳戶的域名衝突了,改成 $hostname就好了。

#### 特別提示3.投遞過程出現如下錯誤:----日誌顯示(cat /var/log/maillog)
Nov  2 14:59:30 net-server postfix/qmgr: C33521CD7F3: from=<jackchan@wx.windy.com>, size=20355, nrcpt=1 (queue active)
Nov  2 14:59:30 net-server maildrop: Temporary authentication failure.
Nov  2 14:59:30 net-server postfix/pipe: C33521CD7F3: to=<jack@windychan.com>, relay=maildrop, delay=0.35, delays=0.33/0/0/0.02, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/local/bin/maildrop: Temporary authentication failure. )

狀況: main.cf中#virtual_transport = virtual就沒問題.
http://www.extmail.org/forum/archiver/tid-3491.html

解決辦法1:說明編譯authlib時沒有指定maildrop的用戶和組,加上--with-mailuser和--with-mailgroup 指定用戶和組后重編譯安裝(vmail.vmail).
解決辦法2,增加"/usr/local/courier-authlib/lib/courier-authlib"到"/etc/ld.so.conf",並執行ldconfig命令。
root@net-server:/#cd   /usr/local/courier-authlib/etc/
root@net-server:/usr/local/courier-authlib/etc/# cp authdaemonrc.dist  ./authdaemonrc
root@net-server:/usr/local/courier-authlib/etc/# vi /usr/local/courier-authlib/etc/authdaemonrc  
(如果非courier-authlib安裝目錄時,authdaemonrc.dist 目錄路徑應為: /usr/local/安裝目錄名/etc/authlib)

解決辦法3:重新確認 /usr/local/courier-authlib/etc/authmysqlrc中關於資料庫的設定.
(比如MYSQL_CLEAR_PWFIELD     clear_password ,在無此欄位,應該取消)

解決辦法4,修改 /usr/local/courier-authlib/etc/authdaemonrc,打開更加詳細log信息,
DEBUG_LOGIN=2
然後再根據實際情況處理.

###特別提示3,安裝客戶端無法登錄(outlook)
Nov  2 16:35:41 net-server pop3d: Connection, ip=
Nov  2 16:35:42 net-server pop3d: LOGIN FAILED, user=jack, ip=

解決辦法:正在收集各種故原因及想法解決(待續..................)。

[ 本帖最後由 windychan 於 2007-11-6 19:15 編輯 ]
《解決方案》

強!:em53: :em53: :em53:

[ 本帖最後由 zunyangshihui 於 2007-11-5 22:51 編輯 ]
《解決方案》

LZ確實強,頂一個!
《解決方案》

支持+問題

:) :) :) :)
強烈支持........學習中發現問題:postfix/postfix-script: starting the Postfix mail system
我的25號埠有,就老是有這個東西...
可以幫我嗎?
:P
《解決方案》

原帖由 w7374520 於 2008-1-9 11:53 發表 http://bbs.chinaunix.net/images/common/back.gif
:) :) :) :)
強烈支持........學習中發現問題:postfix/postfix-script: starting the Postfix mail system
我的25號埠有,就老是有這個東西...
可以幫我嗎?
:P

能不能詳細點!

[火星人 ] Slackware基於POSTFIX+courier-authlib+cyrus-sasl+Courier-IMAP+maildrop+..._1已經有1024次圍觀

http://coctec.com/docs/service/show-post-32511.html