ソースコードコンパイルインストールpostfix


一、設置前の準備
メールはDNSシステムに依存するのでpostfixをインストールする前にDNSをちゃんとしておきます.システムにsendmailがある場合はsendmailをオフにする必要があります
# service sendmail stop
# chkconfig sendmail off

コンパイルインストールpostfixなので、rpmのpostfixがあれば削除し、postfixユーザーなどの情報も削除します.私は後でmysql認証に協力するので、rpmのpostfixはmysql認証をサポートしていないようで、私も検証したことがなくて、保険のため、直接ソースコードにインストールしました!
# yum remove postfix
# userdel postfix
# groupdel postdrop

postfixユーザーおよびグループの作成
# groupadd -g 2525 postfix
# useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
# groupadd -g 2526 postdrop
# useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop

注意:ここでは怠けるためにpostfixユーザーを削除しないでください.postfixのrpmパッケージがインストールされた後、postfixユーザーのUIDとGIDは89です.ここでこのようなIDでサービスを実行すると、後でエラーが発生します.ID番号が500より大きいユーザーを自分で作成したほうがいいです.私がここで使っているのは2525で、みんなに直すことをお勧めしません.ここを直すと、後ろの多くの場所が、変える必要がありますから.postfixをやること自体がめんどくさい!
コンパイル環境および依存パッケージのインストール
# yum groupinstall 'Development Libraries' 'Development Tools'
# yum install httpd php php-mysql mysql mysql-server mysql-devel openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect perl-Unix-Syslog  db4 db4-devel cyrus-sasl-* dovecot-mysql perl-CGI per-GD

一部のソースにはperl-Unix-syslogというパッケージがない場合がありますが、以下のコマンドを使用してインストール#rpm-ivhをダウンロードできます.ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/perl-Unix-Syslog-1.1-1.el6.rf.x86_64.rpm
saslauthdサービスおよびmysqlの起動
# service saslauthd start
# chkconfig saslauthd on
# service mysqld start
# chkconfig mysqld on

二、postfixのインストールを開始する
# wget ftp://ftp.cuhk.edu.hk/pub/packages/mail-server/postfix/official/postfix-2.10.2.tar.gz
# tar xf postfix-2.10.2.tar.gz
# cd postfix-2.10.2
# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ' 'AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/lib64/sasl2 -lsasl2 -lssl -lcrypto'

注:上の命令で注意しなければならないのは、自分の状況に応じて何かを修正することです.ここでは64ビットのシステムなのでmysqlclientは/usr/lib 64/、32ビットのシステムであれば/usr/lib/そうでなければ/usr/bin/ld:cannot find-lmysqlclient
# make && make install
    BTW: Check your /etc/aliases file and be sure to set up aliases
    that send mail for root and postmaster to a real person, then run
    /usr/bin/newaliases.

インストールが完了するとpostfixプロンプトで別名バイナリファイルの生成が表示されます
#  newaliases

私のところは企业レベルのメールシステムを构筑するつもりで、仮想ユーザーをサポートする必要があります.地元のユーザーはこのいくつかのものをテストして、今は先にしません!
スクリプト管理postfixの起動と停止を提供し、以下の内容を/etc/initに置く.d/postfixの中
#!/bin/bash
#
# postfix      Postfix Mail Transfer Agent
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: master
# pidfile: /var/spool/postfix/pid/master.pid
# config: /etc/postfix/main.cf
# config: /etc/postfix/master.cf

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ $NETWORKING = "no" ] && exit 3

[ -x /usr/sbin/postfix ] || exit 4
[ -d /etc/postfix ] || exit 5
[ -d /var/spool/postfix ] || exit 6

RETVAL=0
prog="postfix"

start() {
     # Start daemons.
     echo -n $"Starting postfix: "
        /usr/bin/newaliases >/dev/null 2>&1
     /usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"
     RETVAL=$?
     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
        echo
     return $RETVAL
}

stop() {
  # Stop daemons.
     echo -n $"Shutting down postfix: "
     /usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"
     RETVAL=$?
     [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
     echo
     return $RETVAL
}

reload() {
     echo -n $"Reloading postfix: "
     /usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"
     RETVAL=$?
     echo
     return $RETVAL
}

abort() {
     /usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"
     return $?
}

flush() {
     /usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"
     return $?
}

check() {
     /usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"
     return $?
}

restart() {
     stop
     start
}

# See how we were called.
case "$1" in
  start)
     start
     ;;
  stop)
     stop
     ;;
  restart)
     stop
     start
     ;;
  reload)
     reload
     ;;
  abort)
     abort
     ;;
  flush)
     flush
     ;;
  check)
     check
     ;;
  status)
       status master
     ;;
  condrestart)
     [ -f /var/lock/subsys/postfix ] && restart || :
     ;;
  *)
     echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"
     exit 1
esac

exit $?

スクリプトに実行権限を追加し、起動に参加
# chmod +x /etc/init.d/postfix
# chkconfig --add postfix
# chkconfig postfix on
# chown postfix.postfix -R /var/lib/postfix/
# chown postfix.postfix /var/spool/ -R
# service postfix start

postfixのcryus-saslベースの認証機能を開設するには、以下のコマンドを使用してpostfixがcyrusスタイルのsasl認証をサポートしているかどうかを確認します.出力が次の結果の場合、サポートされます.
# postconf -a
cyrus
dovecot

次の内容を追加します.
#vim /etc/postfix/main.cf
############################CYRUS-SASL############################
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!

注意:1、postfixのプロファイルでは、パラメータ行とコメント行は同じ行に存在できません.2、どのパラメータの値にも引用符を付ける必要はありません.そうしないと、引用符はパラメータ値の一部として使用されます.3、パラメータとその値を変更するたびにpostfix reloadを実行すると有効になります.ただしinet_を変更したらinterfacesではpostfixを再起動する必要があります.4、1つのパラメータの値が複数ある場合、それらを異なる行に置くことができ、その後の各行の前にスペースを1つ多く置くだけでよい.postfixは、最初の文字がスペースまたはtabのテキスト行を前の行の継続と見なします.
三、Courier authentication libraryのインストール
courier-authlibはCourierコンポーネントの認証ライブラリであり、Courierコンポーネントの他のコンポーネントに認証サービスを提供するためにcourierコンポーネントの独立したサブプロジェクトである.その認証機能には、通常、ログイン時のアカウントとパスワードの確認、1つのアカウントに関連するホームディレクトリやメールディレクトリなどの情報の取得、アカウントのパスワードの変更などが含まれる.その認証の実現形態としては、PAMによる/etc/passwdおよび/etc/shadowによる認証、GDBMまたはDBによる認証、LDAP/MySQL/PostgreSQLによる認証などがある.したがって、courier-authlibは、postfixなどのcourier以外の他のメールコンポーネントと統合して認証サービスを提供するためにもよく使用されます.
# wget http://jaist.dl.sourceforge.net/project/courier/authlib/0.66.1/courier-authlib-0.66.1.tar.bz2
# tar xf courier-authlib-0.66.1.tar.bz2
# cd courier-authlib-0.66.1
# ./configure \
    --prefix=/usr/local/courier-authlib \
    --sysconfdir=/etc \
    --without-authpam \
    --without-authshadow \
    --without-authvchkpw \
    --without-authpgsql \
    --with-authmysql \
    --with-mysql-libs=/usr/lib64/mysql \
    --with-mysql-includes=/usr/include/mysql \
    --with-redhat \
    --with-authmysqlrc=/etc/authmysqlrc \
    --with-authdaemonrc=/etc/authdaemonrc \
    --with-mailuser=postfix
# make
# make install
# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
# cp /etc/authdaemonrc.dist  /etc/authdaemonrc
# cp /etc/authmysqlrc.dist  /etc/authmysqlrc

変更/etc/authdaemonrcファイル
# vi /etc/authdaemonrc
authmodulelist="authmysql"  #          ,   authmysql  
authmodulelistorig="authmysql"
daemons=10   #         ,      ,       

構成はMySQL認証に合格し、/etc/authmysqlrcを変更し、そのうち25252525はpostfixユーザーのUIDとGIDである.
# vi /etc/authmysqlrc
MYSQL_SERVER localhost
MYSQL_PORT 3306                   (    mysql     ,       3306)
MYSQL_USERNAME  extmail      (                   )
MYSQL_PASSWORD extmail        (  ,     ,      Extmail      ,   )
MYSQL_SOCKET  /var/lib/mysql/mysql.sock
MYSQL_DATABASE  extmail
MYSQL_USER_TABLE  mailbox
MYSQL_CRYPT_PWFIELD  password
DEFAULT_DOMAIN   gm100861.com  #    
MYSQL_UID_FIELD  '2525'
MYSQL_GID_FIELD  '2525'
MYSQL_LOGIN_FIELD  username
MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD  name
MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)

SysVサービススクリプトの提供と共有ライブラリファイルの追加とサービスの開始
# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 2345 courier-authlib on

# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf
# ldconfig -v
# service courier-authlib start   (    )
# chkconfig courier-authlib on

ソケット方式なので、ポートがないので、プロセスが起動しているかどうかを確認します.
# ps -ef | grep courier
root     11347     1  0 17:02 ?        00:00:00 /usr/local/courier-authlib/sbin/courierlogger -pid=/usr/local/courier-authlib/var/spool/authdaemon/pid -start /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11348 11347  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11349 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11350 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11351 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11352 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11353 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11354 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11355 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11356 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11357 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond
root     11358 11348  0 17:02 ?        00:00:00 /usr/local/courier-authlib/libexec/courier-authlib/authdaemond

仮想ユーザーメールボックスが存在するディレクトリを新規作成し、postfixユーザーに権限を付与します.
# mkdir �Cp /var/mailbox
# chown -R  postfix /var/mailbox

次にSMTP認証を構成し、/usr/lib 64/sasl 2/smtpdを編集する.confは、次の内容であることを確認します.
# vi /usr/lib64/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

四、postfixに仮想ドメインと仮想ユーザーをサポートさせ、postfixにdovecotを構成させる
仮想ドメインと仮想ユーザーをサポートし、/etc/postfix/mainを編集する.cf、以下の内容を追加します.
# vi /etc/postfix/main.cf
########################Virtual Mailbox Settings########################
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_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 10
maildrop_destination_concurrency_limit = 10
##########################QUOTA Settings########################
message_size_limit = 14336000 #        
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes

構成dovecot
# vi /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
disable_plaintext_auth = no

# vi /etc/dovecot/conf.d/10-mail.conf
mail_location =  maildir:/var/mailbox/%d/%n/Maildir

# cp /etc/dovecot/conf.d/auth-sql.conf.ext /etc/dovecot/conf.d/auth-sql.conf
# vi /etc/dovecot/conf.d/auth-sql.conf
passdb {
  driver = sql
  args = /etc/dovecot-mysql.conf
}
userdb {
  driver = sql
  args = /etc/dovecot-mysql.conf
}

dovecotがmysql認証を取得したファイルを編集する
# vi /etc/dovecot-mysql.conf
driver = 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'

dovecotサービスを開始するには、次の手順に従います.
# service dovecot start
# chkconfig dovecot on

五、ExtmailとExtmanのインストール
Extmailは中国人が開発したオープンソースのwebmailツールで、主にperlを使って書かれています.Extmailは,ユーザの登録,受信メールの送信などに用いられる.ExtmanはExtmainの管理ツールで、主に管理者がExtmailの情報を管理するために使用して、例えば仮想用を追加して、ユーザーを追加します!
ダウンロード先:http://www.extmail.org/cgi-bin/download.cgi
Extmailのインストール
# tar zxvf extmail-1.2.tar.gz
# 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

Extmailのプライマリプロファイルの変更
# vi /var/www/extsuite/extmail/webmail.cf

         :
SYS_MESSAGE_SIZE_LIMIT = 5242880 #5M
           

SYS_SESS_DIR = /tmp/extmail     session     
SYS_UPLOAD_TMPDIR = /tmp/extmail/upload

SYS_USER_LANG = en_US
    ,   :
SYS_USER_LANG = zh_CN

SYS_MIN_PASS_LEN = 8        

SYS_MAILDIR_BASE = /home/domains
                     ,   :
SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
                       、              ,     :
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail

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

SYS_MYSQL_HOST = localhost
           ,      

SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password

                  ,     、                  ;      

SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
      authdaemo socket     ,     :
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket

extmailの一時ファイルディレクトリとセッションディレクトリの作成
# mkdir -p /tmp/extmail/upload
# chown postfix.postfix -R /tmp/extmail/

apache関連構成
extmailはローカルメールの配信操作を行うため、apacheサーバを実行するユーザーのアイデンティティをメール配信エージェントのユーザーに変更する必要があります.もしapacheがSUEXECを開いたら、suexecを配置する必要があります.面倒ですが、私は直接消しました.
# vi /etc/httpd/conf/httpd.conf
User postfix
Group postfix
#LoadModule suexec_module modules/mod_suexec.so  #    ,  suexec
#DocumentRoot "/var/www/html"   #       ,      

Extmail仮想ホストプロファイルの作成
# vi /etc/httpd/conf.d/extmail.conf
<VirtualHost *:80>
ServerName mail.gm100861.com
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html
</VirtualHost>
# service httpd restart
# chkconfig httpd on

Extmanのインストールと構成
# tar zxvf  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

プライマリプロファイルの変更
# vi /var/www/extsuite/extman/webman.cf

SYS_MAILDIR_BASE = /home/domains
                     ,   :
SYS_MAILDIR_BASE = /var/mailbox

SYS_DEFAULT_UID = 1000
SYS_DEFAULT_GID = 1000
        ID          postfix   postfix  id ,      2525,  ,         :
SYS_DEFAULT_UID = 2525
SYS_DEFAULT_GID = 2525

SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
   :
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail

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

その後、cgiディレクトリの所有者を変更します.
# chown -R postfix.postfix /var/www/extsuite/extman/cgi/
# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/

Extmanのデータベースのインポート
# cd /var/www/extsuite/extman/docs
# mysql -u root -p < extmail.sql
# mysql -u root -p <init.sql
# cp mysql_virtual_* /etc/postfix/

ユーザーextmailにextmailデータベースにアクセスする権限を付与
# mysql -u root -p
mysql> GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
mysql> GRANT all privileges on extmail.* TO [email protected] IDENTIFIED BY 'extmail';

Extmanの一時ディレクトリを作成し、権限を付与
# mkdir /tmp/extman
# chown postfix.postfix -R /tmp/extman/

すべて完了すると、IPアドレスまたはドメイン名でExtmailにアクセスできます.extmailのトップページでは、ドメイン名にドメイン名を入力し、下の登録をクリックしてユーザーを登録できますが、デフォルトではextmailのドメインが1つしかありません.そのため、Extmanにログインしてドメインリストを管理し、自分の仮想ドメインを追加してメールボックスにログインするドロップダウンデルタを追加し、メールボックス管理にログインすることを選択します.デフォルトの管理者アカウントとパスワードは:[email protected] extmail*123*
六、Mailgraphの構成ext,Extmanのグラフィックログを使用する:(以下に必要なパッケージは自分でダウンロードする)
次に、グラフィックログの実行に必要なパッケージTime::HiRes、File::Tail、rrdtoolをインストールします.最初の2つのパッケージはhttp://search.cpan.org検索してダウンロードして、次のパッケージにアクセスできます.http://oss.oetiker.ch/rrdtool/pub/?M=Dダウンロードして入手して、yumでインストールすることもできます;注意取り付け順序は変更できません.
インストールTime::HiRes
# tar zxvf Time-HiRes-1.9707.tar.gz
# cd Time-HiRes-1.9707
# perl Makefile.PL
# make
# make test
# make install

インストールFile::Tail
# tar zxvf File-Tail-0.99.3.tar.gz
# cd File-Tail-0.99.3
# perl Makefile.PL
# make
# make test
# make install

rrdtoolのインストール
# yum install -y rrdtool

必要なシンボルリンクを作成します(Extmanはこれらのパスの下に関連するライブラリファイルを探します)
# ln -sv /usr/lib64/perl5/auto/RRDs/RRDs.so /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/
# ln -sv /usr/lib64/perl5/RRDp.pm /usr/lib64/perl5/5.10.0/
# ln -sv /usr/lib64/perl5/RRDs.pm /usr/lib64/perl5/5.10.0/
  mailgraph_ext /usr/local,    
# cp -r /var/www/extsuite/extman/addon/mailgraph_ext /usr/local/
# /usr/local/mailgraph_ext/mailgraph-init start

cmdserverの起動(バックグラウンドにシステム情報を表示)
# /var/www/extsuite/extman/daemon/cmdserver --daemon

自動起動キューに追加
# echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.d/rc.local
# echo "/var/www/extsuite/extman/daemon/cmdserver -v -d" >> /etc/rc.d/rc.local

使用方法:約15分待ち、メールシステムに一定のトラフィックがあればextmanにログインし、「グラフィックログ」をクリックするとグラフィック化されたログが表示されます.具体的には毎日、週、月、年は相応の画像をクリックして入るといいです.
注意:インストール中に多くの問題が発生します.私は出会った問題をまとめて、皆さんの参考を提供します.ここをクリックしてください