• Maildir形式でのフォルダ構成

    今日はサーバの話です。
    最近ではGmailやOutlookを見てもわかるように昔の有償アカウントとそん色ありません。
    昔のHotmailとかはメールを送ると本文にコマーシャルが付加されていたのに…。

    そんな中、本当に自分のアカウントということで自宅サーバにてメールサーバを構築しました。
    ところがいざ作ってみるとメールのフォルダがぐちゃぐちゃに…。
    ということで整理してみることにしました。

    1.とりあえずPostfixとDovecotで構築

    メールサーバの構築手順についてはここでは割愛します。
    具体的にどんなサーバにしたかというと、PostfixでSMTP(送信)メールサーバを、DovecotでIMAP(受信)メールサーバを立てました。
    どちらもLet’s Encryptの証明書を用いてover SSL/TLS化していました。
    あちこちの構築参考サイトをみると、メールフォルダの形式にはMailbox形式とMaildir形式の二通りがあることがすぐわかります。
    両者の違いは下記の通りで、今回はMaildir形式で構築しました。

    項目 Mailbox形式 Maildir形式
    メール保存先 /var/spool/mail/(ユーザ名)
    /var/mail/(ユーザ名)
    /home/(ユーザ名)/Maildir
    データ形式 ユーザごとに単一ファイルを作成 メール1通ごとに1ファイルを作成
    特徴 古くから使われてきた形式 ユーザ、メールごとに分散して管理

    構築後、OutlookとAndroidのGmailでセットアップしてみた結果がこちら。

    OutlookとGmailで登録したらフォルダ構成が滅茶苦茶に…

    なぜかたくさんフォルダができてしまい、同じようなフォルダもあります…。
    さすがにこれでは不格好なので、なんとかキレイにすることにしました。

    2.なぜたくさんフォルダできた?

    もともと構築時、Maildirを設定したとき、ユーザのホームディレクトリに次のようにフォルダを追加していました。

    /home/(ユーザ名)/Maildir/{new,cur,tmp}

    とりあえず受信ボックスを用意しただけの状態で、よくある「送信済み」とか「下書き」とか「ゴミ箱」(IMAPフォルダ)は用意されていません。
    ここでメールクライアントソフト(OutlookとかGmail)をセットアップすると、ソフトは自動的に上記のようなIMAPフォルダをサーバ上に作成します。
    ところが、このフォルダ名がクライアントによってバラバラで、Outlook、Gmailそれぞれ別フォーマットで作成した結果、たくさんできてしまったようです…。

    3.結論、最初からフォルダを用意しておく

    最初になにも用意しないからバラバラと作成されてしまう…。
    ということで最初から決まったIMAPフォルダを用意しておくことにしました。

    通常、Maildir形式にするときにはDovecotの設定で、10-mail.confを次のように設定するかと思います。
    (以下、Dovecotのバージョンは現在の2.2.10とします)

    mail_location = maildir:~/Maildir

    この設定だとMaildir配下のcur、new、tmpというディレクトリにすべてのメールが保存されます。
    (IMAPフォルダが分かれていても、ディレクトリとしてはすべてMaildir配下のcur等に保存されます)
    今回はIMAPフォルダ構造とディレクトリ構造を一致させておきたかったので、次のようにしました。

    mail_location = maildir:~/Maildir:LAYOUT=fs

    そして、Maildir配下に次のようにフォルダを作成しました。

    $mkdir -p ~/Maildir/{Drafts,Sent,Junk,Trash}/{new,cur,tmp}

    今回用意したDrafts、Sent、Junk、Trashは実はRFC6154として標準化されてるもので、後述の通り多くのメールクライアントで認識してくれました。
    ちなみに上記のフォルダについては15-mailboxes.confにコンフィグがあります。こちらを編集してDovecotにて自動作成するようにしても良いかもしれません。

    4.設定した結果、すっきり。

    あらかじめ上記フォルダ設定しておくことで、下記の通り余計なフォルダが作成されることなく、スッキリとしたフォルダ構成とすることができました。

    クライアント 画像 備考
    Outlook 2016
    (Windows10)
    Outlook2016 (Windows10) IMAPフォルダ名(英語)のまま表示。
    メール
    (Windows10)
    メール (Windows10) 日本語に置き換えて表示される。
    Evolution
    (Debian8)
    Evolution (Debian8) IMAPフォルダ名(英語)のまま表示。
    手動でフォルダ割り当てを行う必要有。
    Thunderbird
    (Ubuntu16.04)
    Thunderbird (Ubuntu16.04) 日本語に置き換えて表示される。
    Gmail
    (Android 5.0)
    Gmail (Android5.0) 日本語に置き換えて表示される。

    以上、IMAPフォルダ名についての検証でした。
    もっとスマートなやり方をご存知の方いらっしゃいましたら、ぜひ教えてください…。

    ではでは。


    【参考サイト】

    「CentOSで自宅サーバ構築」  fallenangels氏
    メールサーバー構築(Postfix+Dovecot)

    「Dovecot Wiki」
    Namespaces

    RFC 6154

    カテゴリー: Linux, 技術系

    タグ: , , , ,

    コメントを残す

    メールアドレスが公開されることはありません。

    計算式の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.