【技術メモ】PostfixAdmin Vacation機能 自動応答機能を設定

ことうらシステムで構築する大半のメールサーバーは『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のアドレス管理画面に自動応答設定が追加されます。

PostfixAdmin-アドレス管理画面1 PostfixAdmin-アドレス管理画面2 PostfixAdmin-アドレス管理画面3

 

 

 

 

 

ことうらシステム