PostfixAdminのインストールと設定が終わったところで、ようやくPostfixのインストールと設定です


<Postfixのインストールと設定>
1.Postfixのインストール
2.Postfixの設定


■Postfixのインストール
[root@server]~# vi /usr/local/etc/pkgtools.conf

MySQL対応にするのとMaildirでのソフトウェアクォートに対応するようにしました
※mail/postfixでインストールするとpostfix2.5系になります。
多分最新のものでも大丈夫だと思いますが、mail/postf24とかだとpostfix2.4系がインストールされます

MAKE_ARGS = {
'mail/postfix' => 'WITH_MYSQL=yes WITH_MYSQL_VER=51 WITH_VDA=yes',
}

[root@server]~# cd /usr/ports
[root@server]/usr/ports# portinstall mail/postfix

Would you like me to add it [y]? ← postfixユーザーの作成
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? ← 「postfix」を「sendmail」の代替として設定する
※「sendmail」は停止させるので2回目の質問も「y」でOK

[root@server]/usr/ports# rehash
[root@server]/usr/ports# cd

先ほど許可した/etc/mail/meiler.confの中身を確認する
[root@server]~# vi /etc/mail/mailer.conf

sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail

起動時にsendmailをデーモンとして起動させずにpostfixがデーモンとして起動するように設定を変更
[root@server]~# vi /etc/rc.conf

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
postfix_enable="YES"


■postfixをMySQLで利用かつヴァーチャルドメイン対応させる設定
[root@server]~# mkdir /home/vusers


■postfix(main.cf)の設定(ヴァーチャルドメイン対応)
設定項目の詳細はこちら を確認ください(2.3の和訳ですが。。。)
あとこちら も参考になります

[root@server]~# cp /usr/local/etc/postfix/main.cf /usr/local/etc/postfix/main.cf.org
[root@server]~# vi /usr/local/etc/postfix/main.cf

myhostname = hogehoge.sample.com
mydomain = sample.com
myorigin = $mydomain
inet_interfaces = all
mydestination = ※空にする
mynetworks = 127.0.0.0/8
relay_domains = $mydestination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
recipient_delimiter = +
home_mailbox = Maildir/

ヴァーチャルドメインの設定として以下を追加
local_transport = virtual
virtual_transport = virtual
virtual_mailbox_base = /home/vusers
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 10001
virtual_uid_maps = static:10001
virtual_gid_maps = static:10001
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
transport_maps = hash:/usr/local/etc/postfix/transport

※メールボックスの容量制限を設ける場合は以下を追加
mailbox_size_limit = 409600000 <- 400Mまで
message_size_limit = 20480000 <- 20Mまで
virtual_mailbox_limit = 409600000 <-400Mまで
virtual_mailbox_limit_maps = hash:/usr/local/etc/postfix/vquota
virtual_mailbox_limit_override = yes
virtual_overquote_bounce = yes
virtual_mailbox_limit_inbox = yes

※不正中継/スパム対策/他
smtpd_banner = ESMTP $mail_name
smtpd_help_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
allow_untrusted_routing = no
allow_percent_hack = yes
swap_bangpath = yes
smtpd_client_restrictions =
permit_mynetworks,
reject_rhsbl_client rhsbl.ahbl.org,
reject_rbl_client spamcop.net,
reject_rbl_client sbl.spamhaus.org,
reject_invalid_hostname,
check_client_access hash:/usr/local/etc/postfix/reject_list,
permit
smtpd_helo_restrictions =
permit_mynetworks,
reject_invalid_hostname,
permit
smtpd_etrn_restrictions =
permit_mynetworks,
reject_invalid_hostname

owner_request_special = no
max_use = 50 ← 接続要求の最大数(デフォルト100)


■postfix(master.cf)の設定
(ヴァーチャルドメイン対応)

一通りの準備が終わったところで、PostfixAdminをインストールします。
※portsでインストールする場合はとりあえず先にpostfixをインストールだけしてもいいかも・・・
※ここではとりあえず先にpostfixはインストールしてあります。


<PostfixAdminのインストールと設定>
(1.Postfixのインストール)
2.PostfixAdminのインストール
3.PostfixAdminの設定


■PostfixAdminのインストール

[root@server]~# cd /usr/ports
[root@server]/usr/ports# portinstall mail/postfixadmin
[root@server]/usr/ports# rehash
[root@server]/usr/ports# cd

/usr/local/www/postfixadminがインストールされます
Apacheの設定を変更してWebから見られるようにします。

[root@server]~# vi /usr/local/etc/apache22/httpd.conf

↓文末にでも以下を追加(とりあえず最低動くだけの設定)
Alias /postfixadmin/ /usr/local/www/postfixadmin/
<Directory /usr/local/www/postfixadmin>
Order deny,allow
Allow from All
</Directory>

[root@server]~# pkg_info|grep postfixadmin
postfixadmin-2.2.1.1


■PostfixAdminの設定
とりあえずインストールされたときにできたINSTALL.TXTを読めってことなんでそれを見ながら設定

※データベースの作成
[root@server]~# mysql -u root -p
mysql > create database postfix;
mysql > create user 'postfix'@'localhost' identified by 'パスワード';
mysql > grant all privileges on `postfix` . * to 'postfix'@'localhost';
mysql > exit;

一応今作ったユーザーでアクセスできるか確認
[root@server]~# mysql -u postfix -p postfix
Enter Password:*****
mysql >

接続完了!!

※設定ファイルの変更
※config.inc.phpからconfig.local.phpを読込するため独自設定はconfig.local.phpを作った
[root@server]~# vi /usr/local/www/postfixadmin/config.local.php

$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'http://~~~'; ← URL
$CONF['default_language'] = 'ja'; ← 日本語

$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix'; ← データベースユーザー名
$CONF['database_password'] = '*****'; ← パスワード
$CONF['database_name'] = 'postfix'; ← データベース名

$CONF['admin_email'] = 'postmaster@sample.com'; ← 管理者メールアドレス

※初回ドメイン登録時に自動作成されるエイリアス
$CONF['default_aliases'] = array (
'postmaster' => 'postmaster@sample.com',
'webmaster' => 'webmaster@sample.com'
);

$CONF['domain_path'] = 'YES'; ← ドメイン別のフォルダを作る
$CONF['domain_in_mailbox'] = 'NO'; ← 上でNOの場合はYESを指定しないと同一ユーザー名のメールアドレスがおかしなことに。。。

※ページの設定(お好みで)
$CONF['user_footer_link'] = "http://~~~/postfixadmin/usrs/main.php";
$CONF['show_footer_text'] = 'YES';
$CONF['footer_text'] = 'Return to Postmaster;
$CONF['footer_link'] = 'http://~~~/postfixadmin/';

※CSSとか触るのであれば
$CONF['theme_logo'] = 'images/*****.gif';
$CONF['theme_css'] = css/my.css';
CSSをオリジナルにすると結構見やすくなるかも。。。

※ブラウザからsetup.phpにアクセスすると自動的に必要なテーブルが作成されます
※全ドメイン管理用のスーパーユーザーを作って、setup.phpを削除なりすればおわり
[root@server]~# my /usr/local/www/postfixadmin/setup.php /usr/local/www/postfixadmin/setup.php.back
Webベースでメールアカウントの追加などができるように「PostfixAdmin」で管理することにします。
Postfixアドミンを使うために「Apache」、「MySQL」、「PHP5」をインストールします。
今回はMySQL5.1.xのインストール

<Apache2.2.x+MySQL5.1.x+PHP5.x>
1.Apache2.xのインストール
2.MySQL5.1.xのインストール
3.PHP5.xのインストール


■PHP5.xのインストール
Webサーバを立てるわけではないので、PHP5だけをApacheのモジュールとしてインストールします。
今日現在の最新版は5.2.9でした

インストールオプションの設定
[root@server]~# vi /usr/local/etc/pkgtools.conf

MAKE_ARGS = {
'lang/php5' => 'WITH_APACHE=yes WITH_MULTIBYTE=yes',
}

※インストールオプションはports内のディレクトリで「make showconfig」で設定項目を確認することができます。出ない場合は直接Makefileを開けば「WITH_xxxx」とか書いているのでそれを参考に^^

でインストール
[root@server]~# cd /usr/ports
[root@server]/usr/ports# portinstall lang/php5
[root@server]/usr/ports# rehash

Apacheの設定ファイルにPHP関連の記述を追記します
[root@server]/usr/ports# vi /usr/local/etc/apache22/httpd.conf

<IfModule mime_module>~</IfModule>内に
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
を追記

[root@server]/usr/ports# apachectl configtest
[root@server]/usr/ports# apachectl restart

続いてPHP5の機能拡張もインストールします
[root@server]/usr/ports# vi /usr/local/etc/pkgtools.conf

MAKE_ARGS = {
'lang/php5-extensions' => 'WITH_IMAP=yes WITH_LDAP=yes WITH_MCRYPT=yes WITH_BCMATH=yes WITH_GD=yes WITH_MBSTRING=yes WITH_MYSQL=yes WITH_WDDX=yes',
}
オプションはお好みで^^;

[root@server]/usr/ports# portinstall lang/php5-extensions
[root@server]/usr/ports# rehash
[root@server]/usr/ports# cd

PHPの設定
[root@server]~# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
[root@server]~# chmod 644 /usr/local/etc/php.ini
[root@server]~# vi /usr/local/etc/php.ini

日本語関係
mbstring.language = Japanese
mbstring.internal_encoding = UTF8
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none;

セキュリティ関係
expose_php = Off
display_errors = Off
default_charset = "UTF-8"
allow_url_fopen = Off
session.use_only_cookies = 1
session.hash_function = 1

php.iniの設定は最低限のセキュリティ設定と日本語関係のみを設定しています。
こちら のサイトで詳しく説明されているのでご参考に。

Apacheを再起動
[root@server]~# apachectl restart