ことうらシステムで構築する大半のメールサーバーは『Postfix+PostfixAdmin+MySQL』環境で構築されているのですが、PostfixAdminで使えるVacationという自動返信メールの機能は、あまり必要とされていないので基本的に有効にしていません。
が、、、今日初めてお客さまから「色んな理由がるけど、とりあえず急ぎで自動返信メールが使いたいよ~」という要望があり、急遽Vacationを有効化することに。。。
もしかしたら、また同じようなご要望があるかも知れないので、その作業メモです。
(備考)
・[Path To PsotfixAdmin]・・・実際にPostfixAdminがインストールされているパス
・mlhost.blog-kotoura.com・・・自身で管理しているドメインで適当なサブドメイン名(存在してなくてもOK)
1.不足しているPerlモジュールの確認
とりあえずVacationの実態であるスクリプトの文法チェックで不足しているPerlモジュールを特定します。
cd [Path To PsotfixAdmin]/VIRTUAL_VACATION
perl -wc ./vacation.pl
こんな感じのエラーが出力されたら、表示にしたがって不足しているperlモジュールを特定する。
下記の場合は『MIME/EncWords.pm』なのでパッケージ名だと『perl-MIME-EncWords』になります。
MIME/EncWords.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at vacation.pl line 99.
BEGIN failed--compilation aborted at vacation.pl line 99.
dagとかepelをリポジトリに追加していればyumでperlモジュールもだいたいインストールできるので、下記でインストールしていけばOK。
というか、CPANから取得してもいいけど、後々の『yum update』で不整合が起きたりすることもあるので、私はできるだけyumでパッケージを入れるようにしています。
yum install perl-MIME-EncWords
yum install perl-MIME-Charset
yum install perl-Email-Valid
yum install perl-Mail-Sender
yum install perl-Log-Log4perl
で、『perl -wc ./vacation.pl』を繰り返して『syntax OK』が出力されれば不足モジュールは無いはず。
2.vacationメール用のユーザを追加
HOMEディレクトリを指定しつつVacation用のユーザー&グループを追加します。
ユーザーID(10001)やらグループID(10001)を指定してるのは、単に管理上の都合からです。無くても全然大丈夫です。
groupadd -g 10001 vacation
useradd -d /var/spool/vacation -g vacation -M -s /sbin/nologin -u 10001 vacation
3.PostfixAdminの設定
PostfixAdminのコンフィグを編集します。
cd [Path To PsotfixAdmin]
cp -p config.inc.php xxx-config.inc.php.20150213
chmod 000 xxx-config.inc.php.20150213
vim config.inc.php
==変更箇所==
$CONF['vacation'] = 'NO';
↓
$CONF['vacation'] = 'YES';
++++++++++++++++++++++++++
$CONF['vacation_domain'] = 'autoreply.change-this-to-your.domain.tld';
↓
$CONF['vacation_domain'] = 'autoreply.mlhost.blog-kotoura.com';
4.vacationメール処理用スクリプトの設定
mkdir /var/spool/vacation/
cp -p [Path To PsotfixAdmin]/VIRTUAL_VACATION/vacation.pl /var/spool/vacation/.
chown -R vacation.vacation /var/spool/vacation/
chmod -R 700 /var/spool/vacation/
vim /var/spool/vacation/vacation.pl
==変更箇所==
our $db_type = 'Pg';
↓(MysqlをDBに使用している場合)
our $db_type = 'mysql';
++++++++++++++++++++++++++
our $db_username = 'postfixadmin';
our $db_password = 'dell110';
↑(Postfix用のDBアカウントを設定)
our $vacation_domain = 'autoreply.example.org';
↓
our $vacation_domain = 'autoreply.mlhost.blog-kotoura.com';
5.Postfixの設定
以下、3ファイルを編集して、、、
cd /etc/postfix
cp -p master.cf master.cf.20150213
cp -p main.cf main.cf.20150213
cp -p transport transport.20150213
vim /etc/postfix/master.cf
==変更箇所==
vacation unix - n n - - pipe
flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
↑追加
vim /etc/postfix/main.cf
==変更箇所==
# static transport
transport_maps = hash:/etc/postfix/transport
↑(追加)
vim /etc/postfix/transport
==変更箇所==
autoreply.mlhost.blog-kotoura.com vacation:
↑(追加)
transport用のファイルを生成して、、、
postmap /etc/postfix/transport
postfixを再起動すれば完了です
service postfix restart
(補足)
Vacationを有効にすると、PostfixAdminのアドレス管理画面に自動応答設定が追加されます。