必要なパッケージのインストール

yum install postgresql postgresql-server postgresql-devel postgresql-libs \
rpm-build db4-devel openldap-devel cyrus-sasl-devel pcre-devel openssl-devel


SRPMSのダウンロード

# wget http://ftp.riken.jp/Linux/caos/centos/5.5/os/SRPMS/postfix-2.3.3-2.1.el5_2.src.rpm
# cd /usr/src/redhat/SPECS
# vi postfix.spec
%define LDAP 2
%define MYSQL 0
%define PCRE 1
%define SASL 2
%define TLS 1
%define PGSQL 1 ←−−−追加
%define IPV6 1
%define POSTDROP_GID 90
%define PFLOGSUMM 1

・・・・

%if %{TLS}
Requires: openssl
BuildRequires: openssl-devel >= 0.9.6
%endif
[以下4行を追加]−−−−−
%if %{PGSQL}
Requires: postgresql
BuildRequires: postgresql, postgresql-devel
%endif

Provides: /usr/sbin/sendmail /usr/bin/mailq /usr/bin/rmail

%description

・・・・

%if %{TLS}
  if pkg-config openssl ; then
    CCARGS="${CCARGS} -DUSE_TLS `pkg-config --cflags openssl`"
    AUXLIBS="${AUXLIBS} `pkg-config --libs openssl`"
  else
    CCARGS="${CCARGS} -DUSE_TLS -I/usr/include/openssl"
    AUXLIBS="${AUXLIBS} -lssl -lcrypto"
  fi
%endif
[以下4行を追加]−−−−−
%if %{PGSQL}
  CCARGS="${CCARGS} -DHAS_PGSQL -I/usr/include/postgresql"
  AUXLIBS="${AUXLIBS} -lpq -lssl -lcrypto -lcrypt"
%endif
%if %{IPV6} != 1
  CCARGS="${CCARGS} -DNO_IPV6"
%endif


修正したらパッケージを作成

rpmbuild -ba postfix.spec

PostgreSQLに対応したpostfixをインストール

# cd /usr/src/redhat/RPMS/x86_64
# rpm -ivh postfix-2.3.3-2.1.x86_64.rpm
Preparing...                ########################################### [100%]
   1:postfix                ########################################### [100%]



PostgreSQL対応Postfixがアップデートされないようにyum.confを修正する

# vi /etc/yum.conf

最終行に下記1行を追記する

exclude=postfix*


Postfixadminの導入

postfixadminのダウンロード

# wget http://downloads.sourceforge.net/postfixadmin/postfixadmin-2.3.2.tar.gz
tar zxvf postfixadmin-2.3beta.tar.gz
mv postfixadmin-2.3.3 /home/webapplications/
cd /home/webapplications/


設定ファイルの編集

# vi /home/webapplications/postfixadmin/config.inc.php
$CONF['configured'] = true;  ←trueにする
$CONF['default_language'] = 'ja'; ←日本語に
$CONF['database_type'] = 'pgsql'; ←PostgreSQLを使用
$CONF['database_user'] = 'postfixadmin'; ←DB接続ユーザ
$CONF['database_password'] = 'パスワード' ←パスワード
$CONF['domain_path'] = 'YES'; ←メールボックスをドメイン名フォルダ内に作成する
$CONF['domain_in_mailbox'] = 'NO'; ←メールフォルダ名にドメイン名を付加しない
$CONF['fetchmail'] = 'NO'; ←fetchmail無効(ドメインをまたいだメール検索を利用しない)

Apacheの設定

# cd /home/webapplications/postfixadmin
# chown -R apache *
# chmod -R 400 *
# chmod 500 css images languages templates admin users
# vi /etc/httpd/conf/httpd.conf
 Alias /postfixadmin "/home/webapplications/postfixadmin/"
 <Directory "/home/webapplications/postfixadmin/">
   Options FollowSymLinks Includes ExecCGI
   AllowOverride All
   Order deny,allow
   allow from all
 </Directory>

設定保存後、apacheを再起動する

# /etc/init.d/httpd restart


postfixadminの動作確認

http://ホスト名/postfixadmin/setup.phpにアクセスする

php-mbstring,php-imapをインストール

# yum install php-mbstring php-imap

再度表示すると、OK

セットアップパスワードとドメイン管理者メールアドレス、パスワードを入力する。
正常に追加されたら、setup.phpは削除orリネームする。

http://ホスト名/postfixadmin/ にアクセスし、ログインできればOK。 (この先の設定はまだ、行いません。)

メール専用ユーザの作成

# adduser vmailuser

また、vipwでvmailuserのuid,gidを確認します。
(main.cf,dovecotの設定で必要になります)

# vipw
・・・
vmailuser:x:1000:1000::/home/vmailuser:/bin/bash

※ここでは1000となっていますが、環境によって表示が変わります。
 ご自分の環境に合わせてください。

PostfixにPostgreSQLの設定を追加

# vi /etc/postfix/pgsql_virtual_alias_maps.cf
user = postfixadmin
password = パスワード
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = true
# vi /etc/postfix/pgsql_virtual_domains_maps.cf
user = postfixadmin
password = パスワード
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = false and active = true
# vi /etc/postfix/pgsql_virtual_mailbox_maps.cf
user = postfixadmin
password = パスワード
hosts = localhost
dbname = postfix
query = SELECT maildir||'Maildir/' FROM mailbox WHERE username='%s'
# vi /etc/postfix/main.cf
# SMTP
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-dovecot
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
# Virtual Domain
mydestination =
local_transport = virtual
virtual_transport = virtual
virtual_mailbox_base = /home/vmailuser
virtual_alias_maps = pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1000
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000


設定後、postfixを再起動します。

# /etc/init.d/postfix restart


dovecotにPostgreSQLの設定を追加

# vi /etc/dovecot.conf
・・・

 # SQL database <doc/wiki/AuthDatabase.SQL.txt>
 passdb sql {
   args = /etc/dovecot/dovecot-sql-pgsql.conf
 }

・・・

 # SQL database <doc/wiki/AuthDatabase.SQL.txt>
 userdb sql {
   args = /etc/dovecot/dovecot-sql-pgsql.conf
 }
# vi /etc/dovecot/dovecot-sql-pgsql.conf
driver = pgsql
connect = host=localhost user=postfixadmin password=パスワード dbname=postfix
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = 'Y'
user_query = SELECT '/home/vmailuser/'||maildir AS home, 1000 AS uid, 1000 AS gid FROM mailbox WHERE username = '%u' AND active = '1'


設定後、dovecotを再起動します。

# /etc/init.d/dovecot restart


設定は以上です。http://ホスト名/postfixadmin/にアクセスして確認します。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-11-23 (火) 10:51:00 (3248d)