1.プレミアムプランで返信設定
さくらのレンタルサーバでは、プレミアムプランではコントロールパネルで自動返信の設定は行えない。
一方、ビジネス・ビジネスプロプランでは行える。
ただ、コントロールパネルからは設定できないが、サーバ内で直接設定することで返信設定は行なえる。
sshでログインし、対象アカウントのメールボックスに設定したり、scpコマンド、Filezillaなどで設定ファイルをアップロードして返信設定をすることができる。
以下の記事に設定方法が記載されている。
2.自動返信の設定手順概要
参考サイトに手順は記載されていますが、簡単に流れだけ記載する。
ちなみに、設定は自己責任でお願いします。(バックアップを取って問題あればもどしてください)
(1)コントロールパネルから返信設定をするアカウントを作成する。
- これでサーバ内にアカウントのメールボックスのフォルダと関連ファイルが作成される。
- メールボックスは以下の場所にある。
/home/[契約ID]/MailBox/[アカウント名]
(2)サーバ内の該当アカウントのメールボックスにある「.mailfilter」ファイルを編集する。
- 必要に応じて、返信メールファイルをアップロードする。
- 【注意】「.mailfilter」ファイルを編集した後に、コントロールパネルから設定をすると上書きされて編集が消えます。
※日本語の件名と送信者名を設定するには?
「.mailfilter」ファイルの設定については、前述の参考サイトに記載がある。日本語を使わなければ、参考サイトの内容で十分である。
でも、日本語の件名や送信者の設定については記載がある。
次に、日本語の表示を踏まえた「.mailfilter」の設定を記載する。
3.日本語は文字コード変換、エンコード、そして、文字コードやエンコード方式を表す文字列の付与が必要
「.mailfilter」ファイルに追記する返信設定を以下に記載する。
以下のコマンドの、[設定項目]は、実際の設定値に置き換えられる。
以下のコマンドの「-N」オプションは、メールに受信メールの引用を記載しない設定になります。これがないと、受信したメールが引用される。
cc "| mailbot -N -c 'ISO-2022-JP' -t /home/[契約ID]/MailBox/[アカウント]/[返信内容のメールファイル名] -s '[件名]' -A 'Reply-To: [返信先メールアドレス]' -A 'From: [送信者名]<[送信者アドレス]>' /usr/sbin/sendmail -t"
上記の「件名」と「送信者名」を日本語にするには、設定する日本語を以下のように加工し、設定する。
- 文字列を「JISコード(ISO-2022-JP)」か「UTF-8」に変換する。
- 上記の値を、「Base64」や「Quoted-Printable」のいずれかでエンコードする。
- エンコードされた値に、文字コードやエンコード方式を表す文字列を追記する。
以下のような形式になります。
=?文字セット?エンコード方式?エンコード後の文字列?=
これは、mailfilter特有の設定ではなく、メールに関するコマンド、プログラムをする場合に共通するものになる。
4.Pythonを使ってコマンドを作成
文字コード変換とエンコードを変更する方法はいくらでもありますが、以下、Pythonを使った方法を記載する。
以下は、文字コードはJIS(ISO-2022-JP')、エンコードはBase64。
import base64
value = 'テスト文字'
jis = value.encode('ISO-2022-JP')
b64 = base64.b64encode(jis).decode()
print('=?ISO-2022-JP?B?' + str(b64) + '?=')
折角なので、設定値まるごと作成するPythonコードを記載する。
このコードを、実行すれば、「.mailfilter」に追記するコマンドが生成できる。
返信メールの内容は「reply-mail.txt」という名前で別ファイルにして、「.mailfilter」と同階層に配置する想定。
返信メールファイルはJISに文字コードを変換する。
import base64
# ==============================
# 設定値(ここだけ値を設定する)
# ==============================
# 契約者ID
contractor = 'test-client'
# 受信メールアカウント
account = 'test-account'
# 件名
subject = '【お礼】テスト件名'
# 送信者名
sender_name = 'テスト送信者'
# 送信者アドレス
sender_address = 'test@example.com'
# 返信アドレス
reply_address = 'rep@example.com'
# =========================
# 文字コード変換
# =========================
def convert_charset(value):
jis = value.encode('ISO-2022-JP')
b64 = base64.b64encode(jis).decode()
return '=?ISO-2022-JP?B?' + str(b64) + '?='
# =========================
# コマンドテンプレート
# =========================
template = '''
cc "| mailbot -N -c 'ISO-2022-JP' -t /home/%(contractor)s/MailBox/%(account)s/reply-mail.txt -s '%(subject)s' -A 'Reply-To: %(reply_address)s' -A 'From: %(sender_name)s<%(sender_address)s>' /usr/sbin/sendmail -t"
'''
# =========================
# コマンド作成(値の置換)
# =========================
print(template % { \
'contractor' : contractor, \
'account' : account, \
'subject': convert_charset(subject), \
'sender_name' : convert_charset(sender_name), \
'sender_address' : sender_address, \
'reply_address' : reply_address, \
})
5.参考情報
さくらのレンタルサーバがメールの振り分けなどに使っているのは「maildrop」というアプリである。
返信設定に利用したコマンドは「mailbot」になります。リファレンスは以下になる。
その他、maildropの返信設定の参考になる情報は以下になる。