セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ vol.22 WSL 2(Ubuntu)に、構成済みメール環境を組み込む(後編)
2024年06月27日配信
2024年07月12日更新
執筆者:山内 和朗
前回(vol.21 前編)に続き、WSL 2上に簡単に導入できるクローズドなメール送受信環境、「Ubuntu_mailenv.tar」の作り方を紹介します。前回は、ベースとなるLinuxディストリビューション「Ubuntu」のインストールと初期設定を行いました。今回はその上に「postfix」と「dovecot」をインストールし、クローズドなメール環境として動作するように必要な設定を行います。最終的な動作環境のイメージについては、前回の図1(クリックで拡大)で確認してください。
コマンドプロンプトまたはPowerShellで次のコマンドラインを実行し、WSL 2のUbuntuに接続します。Ubuntuが実行中でない場合はこのコマンドラインで開始されます。なお、wsl --installによるWSL 2コンポーネントのインストールには管理者権限が必要ですが、インストール済みのLinuxディストリビューションの開始や接続は一般ユーザー権限で実行できます。
C:¥> start wsl |
Ubuntuのシェルに接続したら、次のコマンドラインを実行して、postfixとdovecotのパッケージをインストールします。postixインストール時の「Postfix Configuration」のページでは、「Internet Site」または「Local only」を選択してください。次の「System mail name」は既定値を受け入れてください。いずれにしろ、後で必要な設定はすべて行います。また、postfixとdovecotのインストールではどちらもエラーが発生しますが、この段階では無視してください(画面1、画面2)。
$ sudo apt update $ sudo apt install postfix $ sudo apt install dovecot-core dovecot-imapd dovecot-pop3d |
画面1 postfixのインストール時には、「Internet Site」または「Local only」を選択して進める
画面2 postfixとdovecotインストール時のエラーはこの段階では無視
インストールしたpostfixの設定を行います。vi(またはvim)エディターで/etc/postfix/main.cfを開き、必要な設定を行います。/etc/postfix/main.cfの編集が終了したら、上書き保存し、postfix checkコマンドでエラーがないかどうかをチェックします。
$ sudo vi /etc/postfix/main.cf |
postfixの設定ファイル/etc/postfix/main.cfはインストール時の「Postfix Configuration」での設定に従って自動作成されます(注:No configurationを選択した場合はファイル自体が作成されません)が、次に示す/etc/postfix/main.cfの内容を含むように、追記または既存の行を書き換えてください。くれぐれも、設定が重複しないように注意してください。この設定では、メールサーバー「mailsv.mylab.test(このUbuntuのホスト名)」が、信頼されたネットワーク(127.0.0.0/8、つまりlocalhost)から「mylab.test」ドメイン宛のメールを配信し、外部へのメールの中継(Relay)や信頼されたネットワーク以外からの接続は拒否(Reject)します。
/etc/postfix/main.cf
myhostname = mailsv.mylab.test mydomain = mylab.test mydestination = $myhostname, localhost, localhost.$mydomain, $mydomain mynetworks = 127.0.0.0/8 inet_interfaces = all default_transport = error relay_transport = error inet_protocols = ipv4 home_mailbox = Maildir/ smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination |
次のコマンドラインを実行して、/etc/postfix/main.cfの内容にエラーがないかどうかチェックし、メールスプールや/etc/newaliasesを準備して、systemdでサービスを開始、登録します。
$ sudo postfix check $ sudo chmod 777 /var/mail $ sudo newaliases $ sudo systemctl start postfix $ sudo systemctl status postfix $ sudo systemctl enable postfix |
WindowsにTelnetクライアントをインストールしてある場合は、WindowsのコマンドプロンプトまたはPowerShellから次のコマンドラインを実行してみてください。localhost(Ubuntu)のSMTPポート25に接続できることを確認できるはずです(画面3)。
C:¥> telnet localhost 25 quit |
画面3 postfixの設定とSMTPポート25への接続テスト
次にdovecotの詳細設定を行います、vi(またはvim)エディターで/etc/dovecot/ディレクトリにあるdovecot.conf、conf.d/10-mail.conf、conf.d/10-auth.conf、conf.d/10-ssl.confを開き、各ファイルにこの後示す内容を含む行を追記するか、変更するか、コメントアウト(#)します。くれぐれも、設定が重複しないように注意してください。その後、systemdでサービスを再起動します。
$ sudo vi /etc/dovecot/dovecot.conf $ sudo vi /etc/dovecot/conf.d/10-mail.conf $ sudo vi /etc/dovecot/conf.d/10-auth.conf $ sudo vi /etc/dovecot/conf.d/10-ssl.conf $ sudo systemctl restart dovecot $ sudo systemctl status dovecot |
/etc/dovecot/dovecot.conf
protocols = pop3 imap listen = * |
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir |
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no |
/etc/dovecot/conf.d/10-ssl.conf(ssl=の行頭に#を追加してコメントアウト)
#ssl = yes |
WindowsにTelnetクライアントをインストールしてある場合は、Windowsのコマンドプロンプトから次のコマンドラインを実行してみてください。localhost(Ubuntu)のPOP3ポート110やIMAPポート143に接続できることを確認できるはずです(画面4)。
C:¥> telnet localhost 110 quit C:¥> telnet localhost 143 a logout |
画面4 dovecotの設定とPOP3ポート110、IMAPポート143への接続テスト
ここまでの時点で、メール送受信環境はほぼ完成です。あとは、Ubuntu側にローカルユーザーを作成すれば、そのユーザーでメールを受信(および送信)できるようになります。vol.20でお見せしたデモのようにです。ですがその前に、クリーンな現在の状態で、成果物「Ubuntu_mailenv.tar」を作成してしまいましょう。
Ubuntuのシェル環境をexitコマンドで終了し、WindowsのコマンドプロンプトまたはPowerShellで次のコマンドラインを実行します。これで「Ubuntu_mailenv.tar」は完成です(画面5)。
C:¥> wsl --terminate Ubuntu C:¥> wsl --export Ubuntu C:¥work¥Ubuntu_mailenv.tar |
画面5 ユーザーを作成する前の段階で、Ubuntuの状態をファイル「Ubuntu_mailenv.tar」にエクスポートする
Hyper-V VMで作業している場合は、あとで動作確認したとき問題を発見した時に備えて、この時点でチェックポイントを作成しておきましょう。
現在のUbuntuは、削除せずに、ユーザーの作成やメース送受信のテスト(ユーザー間の送受信テスト、外部中継されないテスト、外部から踏み台にされないテストなど)を行うのに引き続き利用できます。テストの方法や内容については省略しますが、さまざまなケースでテストしてみてください(メールソフトの設定やユーザーの追加については、vol.20を参照してください)。そして、期待通りに動作しないという場合は、チェックポイントに戻って設定を見直し、期待通りに動作するまでトライ&エラーを繰り返します。期待通りの動作のための設定が固まったら、その設定を含む「Ununtu_mailenv.tar」を作り直せばよいのです。
なお、このテストメール環境の設定は、送信メールサーバーのセキュリティ要件が強化されている(SMTP-AUTHが必須)、Microsoft OutlookやWindows 10/11のメールアプリ、Outlook(New)アプリには対応していません。SMTP_AUTH認証に対応させるためには、さらにSASLやTLS関連のインストールと設定が必要です。