zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【qmail】AmazonLinux+qmail+vpopmail+qmailadmin+autorespondで、autorespondの日本語文字化け対策

【問題】

AmazonLinux+qmail+vpopmail+qmailadmin+autorespondで作られているメールサーバで、autorespondが返す本文/自動返信に引用されるメール本文が文字化けする。
メッセージをqmailadminで作成した場合に起こるが、これはqmailadmineucベースであるため。

【解決サマリ】

1)本文の文字化け

qmailadminで生成された
/home/vpopmail/domains/hoge.com/user/vacation/message
(EUC-JP (LF))をメール標準(※)の文字コードISO-2022-JP」に変換することで解決。
※メールの文字コードは歴史的経緯よりISO-2022-JPがデフォルトとされている
【参照】https://ja.wikipedia.org/wiki/ISO-2022-JP

2)引用文の文字化け

文字化け対策は不可能と思われたため、.qmailで記載されているautorespondのコマンド引数について、オプション(末尾に 0)をつけて送信元のメールを引用させないことで回避した。

【環境】

OS:Amazon Linux AMI
LANG:en_US.UTF-8

qmail:qmail-1.03
qmailadmin:qmailadmin-1.2.16
autorespond:autorespond-2.0.5
vpopmail:popmail-5.4.33

【詳細】

1)不在通知設定

qmailadminで不在通知設定を有効とし、不在通知の本文として以下の内容を作成。

お問い合わせいただきありがとうございます。
確認次第、担当の者より回答をさせていただきます。

※本メールは送信専用です。返信にはご回答できません。
2)文字コード変換

メールサーバにSSHログインし、上記返信ドキュメントが
/home/vpopmail/domains/hoge.com/user/vacation/message
として配置されているので、不要なタイトル、送信元などを削除して本文のみとしたのち、nkf(※)を使用して文字コードISO-2022-JPに変換

nkf -j --overwrite /home/vpopmail/domains/hoge.com/user/vacation/message

# 上記処理で権限が変わってしまうので以下の対応も行う

chown vpopmail:vchkpw /home/vpopmail/domains/hoge.com/user/vacation/message

nkfがインストールされていない場合は以下の手順でインストール

wget http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
yum localinstall nkf-2.0.8b-6.2.el6.x86_64.rpm

【参照】
文字コード変換コマンドの nkfの使い方と実例をまとめました。 - それマグで!

3)autorespondの本文添付をOFFにする

不在通知設定ONの際にqmailadminにより生成されている.qmail(/home/vpopmail/domains/hoge.com/user/直下)の末尾に「0」を追記
ついでに返信回数上限を3→30位にあげとく

/home/vpopmail/domains/hoge.com/user/Maildir/
| /usr/bin/autorespond 86400 30 /home/vpopmail/domains/hoge.com/user/vacation/message /home/vpopmail/domains/hoge.com/user/vacation 0


以上で、(とりあえず)自動応答時の文字化けはなくなったかと思います。

【autorespondのオプション】

# autorespond -h

autorespond: usage: time num message dir [ flag arsender ]

time - amount of time to consider a message (in seconds)
num - maximum number of messages to allow within time seconds
message - the filename of the message to send
dir - the directory to hold the log of messages

optional parameters:

flag - handling of original message:

0 - append nothing
1 - append quoted original message without attachments <default>

arsender - from address in generated message, or:

+ = blank from envelope !
$ = To: address will be used