さくらのレンタルサーバで自動返信設定（メールにおける日本語での件名と送信者名設定）

# １．プレミアムプランで返信設定

さくらのレンタルサーバでは、プレミアムプランではコントロールパネルで自動返信の設定は行えない。
一方、ビジネス・ビジネスプロプランでは行える。

https://help.sakura.ad.jp/mail/2112/

ただ、コントロールパネルからは設定できないが、サーバ内で直接設定することで返信設定は行なえる。

sshでログインし、対象アカウントのメールボックスに設定したり、scpコマンド、Filezillaなどで設定ファイルをアップロードして返信設定をすることができる。

以下の記事に設定方法が記載されている。

https://www.dm2.co.jp/blog/1148

http://awasanpd.blog114.fc2.com/blog-entry-504.html

# ２．自動返信の設定手順概要

参考サイトに手順は記載されていますが、簡単に流れだけ記載する。
ちなみに、設定は自己責任でお願いします。（バックアップを取って問題あればもどしてください）

## （１）コントロールパネルから返信設定をするアカウントを作成する。

- これでサーバ内にアカウントのメールボックスのフォルダと関連ファイルが作成される。
- メールボックスは以下の場所にある。

```
/home/[契約ID]/MailBox/[アカウント名]
```

## （２）サーバ内の該当アカウントのメールボックスにある「.mailfilter」ファイルを編集する。

- 必要に応じて、返信メールファイルをアップロードする。
- <font color="red">**【注意】「.mailfilter」ファイルを編集した後に、コントロールパネルから設定をすると上書きされて編集が消えます。**</font>

## ※日本語の件名と送信者名を設定するには？

「.mailfilter」ファイルの設定については、前述の参考サイトに記載がある。日本語を使わなければ、参考サイトの内容で十分である。
でも、日本語の件名や送信者の設定については記載がある。
次に、日本語の表示を踏まえた「.mailfilter」の設定を記載する。


# ３．日本語は文字コード変換、エンコード、そして、文字コードやエンコード方式を表す文字列の付与が必要


「.mailfilter」ファイルに追記する返信設定を以下に記載する。
以下のコマンドの、[設定項目]は、実際の設定値に置き換えられる。
以下のコマンドの「-N」オプションは、メールに受信メールの引用を記載しない設定になります。これがないと、受信したメールが引用される。


```sh
cc "| mailbot -N -c 'ISO-2022-JP' -t /home/[契約ID]/MailBox/[アカウント]/[返信内容のメールファイル名] -s '[件名]' -A 'Reply-To: [返信先メールアドレス]' -A 'From: [送信者名]<[送信者アドレス]>' /usr/sbin/sendmail -t"
```

上記の「件名」と「送信者名」を日本語にするには、設定する日本語を以下のように加工し、設定する。


1. 文字列を「JISコード（ISO-2022-JP)」か「UTF-8」に変換する。
2. 上記の値を、「Base64」や「Quoted-Printable」のいずれかでエンコードする。
3. エンコードされた値に、文字コードやエンコード方式を表す文字列を追記する。

以下のような形式になります。

```
=?文字セット?エンコード方式?エンコード後の文字列?=
```

https://sendgrid.kke.co.jp/blog/?p=10958


これは、mailfilter特有の設定ではなく、メールに関するコマンド、プログラムをする場合に共通するものになる。

# ４．Pythonを使ってコマンドを作成

文字コード変換とエンコードを変更する方法はいくらでもありますが、以下、Pythonを使った方法を記載する。
以下は、文字コードはJIS（ISO-2022-JP'）、エンコードはBase64。

```py:convert.py
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に文字コードを変換する。


```py:create-mailfilter.py
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, \
  })



```

# ５．参考情報

さくらのレンタルサーバがメールの振り分けなどに使っているのは「maildrop」というアプリである。

https://www.courier-mta.org/maildrop/


返信設定に利用したコマンドは「mailbot」になります。リファレンスは以下になる。

https://manpages.debian.org/testing/maildrop/mailbot.1.en.html

その他、maildropの返信設定の参考になる情報は以下になる。

https://blog.mori-soft.com/entry/2019/10/04/161153

https://server-setting.info/centos/maildrop-delivery-autoresponse.html