メールサーバーについて
今日は夏休みなので腰を据えてプログラムを書こうと思っていた。
現実はメールサーバーを構築する必要性に駆られている。
一般的にメールサーバーの構築に費やす時間は無駄なのでAmazon SESや、Mailgunなどのサービスを利用するのが好ましい。
実際に私も一時期某ドメインサービスが公開していた1年更新のメールサーバーに契約していたことがある。1
まずそもそもなぜこのご時世にメールなのか。
もともとWebアプリケーションを、といってももっぱら私の場合はRailsだが、非同期処理の終了後に何らかの通知を行いたいと思った時におよそDiscordを利用してきた。
ただDiscordはめったにアクセスしなくなってしまったし、そもそも非公開のサービスが第三者のサーバーに依存するという状況は好ましくなかった。
そこでNtfyというサーバーを試したりもしたのだが、これも使い勝手があまりよくなかった。2
そういった経緯を経て、やっぱり初心に帰ろうというか、普段扱っているメールに注目することにした。
メールサーバーを公開しようと思うと、DKIMなどのよくわからない単語がついてくる。
これらをうまく設定しないとメールサーバーとして実用性はないので、この手間を省くために普段我々はメールサービスを利用する。
ただメールというものは所詮TCPでつながったサーバーがメールファイルをやり取りしているに過ぎない。
言い換えるとプロトコルが異なるだけでブラウザでWebページを見るのとそこまで変わりない。
前置きが長くなってしまったが、ようは普段のように外部に公開せずにLANでやり取りしていればなんら問題ない。
Internal email server / service
I have an internal only mail server that doesn’t send or receive mail outside my LAN. I use docker-mailserver for this. It’s fairly easy to set up a minimal server though I haven’t figured out how to enable SSL/TLS so everything is unencrypted in the backend at the moment.
LANの外ではメールを送受信しない、社内専用のメールサーバーがあります。これにはdocker-mailserverを使っています。SSL/TLSを有効にする方法がまだわかっていないので、今のところバックエンドはすべて暗号化されていません。
I mainly expose the mail server to my other selfhosted services so they can send notification emails to users. Users access their mail through a selfhosted roundcube webmail frontend. No IMAP/SMTP ports are exposed on the LAN or externally. It’s enough for my use case (to teach my kids email).
私は主に、他のセルフホスト・サービスにメール・サーバーを公開して、ユーザーに通知メールを送れるようにしています。ユーザーはセルフホストされたラウンドキューブのウェブメールフロントエンドからメールにアクセスします。IMAP/SMTPポートはLAN上にも外部にも公開していません。私のユースケース(子供にメールを教える)には十分です。
部分引用だが、この投稿に感銘を受けた。
というわけでこの投稿に則ってdocker-mailserverをインストールしてみようというのが目的である。
結局あれから2日近くかけてもうまくいかなかった。
途中Mailcowという別のプロジェクトを試したり、PostfixやDovecotを単体でも試してみたが私にはうまく設定できなかった。
Thunderbirdでは接続できないが、net/imapというライブラリでは一覧の取得まではいった。
IMAPサーバーはSSLを無効にする方法を調べたり、それなりに時間をかけたなりの知見は得たつもりだ。
だけれどもこれ以上連休を調べる時間に費やすのは嫌だったので冒頭のホスティングサービスを利用することにした。
現状はうまく動作している。
これがまた気がついたら動作しなくなっている可能性も否めないが、現状これよりもよい手段が見当たらなかった。
また余裕ができたらLAN内で動作するメールサーバーの構築に挑戦したい。
もともとメール送信はGitLabでも運用したかったのだが、これが動かなかった。
その原因をよくよく考えてみると単に異なるドメイン同士から送信しようとしていたため、メールサーバーのサービスそのものは全く問題がなかったことにようやく気づいた。