www.mtkn.jp

Manuscripts for my personal webpage.
git clone https://git.mtkn.jp/www.mtkn.jp
Log | Files | Refs | README

commit c50afb953c485cc7c19b7133d053324171e2b6f6
parent d7c9c9df98b6b1e4036965fbb923a58c97e193ea
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Tue, 16 Jan 2024 15:48:37 +0900

update draft

Diffstat:
Mman/draft/mailserver.html | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Mpub/draft/mailserver.html | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Mpub/rss.xml | 4++--
3 files changed, 181 insertions(+), 13 deletions(-)

diff --git a/man/draft/mailserver.html b/man/draft/mailserver.html @@ -203,7 +203,7 @@ DNS MTA (example.com ddd.ddd.ddd.ddd) メールきたんやけどどないしょ? <---------------------------------------- - ここ(portmaster@mtkn.jp)に通報や。 + ここ(postmaster@mtkn.jp)に通報や。 (DMARCレコード) ----------------------------------------> @@ -286,7 +286,8 @@ pass proto tcp from any to any port { 25, 587, 993 } #mail # pfctl -f /etc/pf.conf </code></pre> -<h2>DNSのAレコード、MXレコード、PTRレコードの設定</h2> +<h2>DNSの設定</h2> +<h3>A, MX, SPF, DMARC</h3> <p> DNSのレコードを設定する。\ ムームーDNSの場合、コントロールパネルにログインし、サイドバーから\ @@ -327,14 +328,46 @@ DNSのレコードを設定する。\ <td>v=spf1 mx -all</td> <td></td> </tr> +<tr> +<td>_dmarc</td> +<td>TXT</td> +<td>v=DMARC1;p=reject;rua=mailto:postmaster@mtkn.jp</td> +<td></td> +</tr> </tbody> </table> +<p> +ひとつめのAレコードは、ドメイン名(mtkn.jp)にIPアドレス(sss.sss.sss.sss)を\ +紐付けるものである。\ +ふたつめはmail.mtkn.jpのIPアドレスを登録するものである。\ +みっつめのMXレコードは、このドメイン宛てのメール(user@mtkn.jp等)をどこの\ +サーバーに送信するかを決めるものである。上記の設定では、mail.mtkn.jpに送信\ +するようにしている。\ +以上の設定で、user@mtkn.jp宛てのメールは、mail.mtkn.jpというサーバーに\ +送信すればよいことが分かり、さらにこのサーバーのIPアドレスはsss.sss.sss.sss\ +であることも分かる。 +</p> +<p> +次のTXTレコードはSPFレコードである。\ +v=spf1でSPFのバージョンを示し、mxでドメインのMXレコードに登録された\ +IPアドレスからの送信を許可し、-allでそれ以外のIPアドレスからの送信\ +を禁止している。 +</p> +<p> +最後のものはDMARCレコードである。\ +v=DMARC1でバージョンを示し、p=rejectで、本人確認をクリアしなかったメール\ +について、その受信者が受信を拒否するように指定している。\ +rua=mailto:postmaster@mtkn.jpでは、本人確認をクリアしなかったメール\ +を受信した場合の通報先を指定している。\ +</p> + +<h3>PTR</h3> <p>\ PTRレコードを設定する。\ さくらのVPSの場合、VPS管理画面にログインし、ネットワーク>\ ホスト名逆引き登録と進み、カスタムホスト名に自分のドメイン名\ -(mtkn.jp)を入力する。TODO: mail sub domain?? +(mtkn.jp)を入力する。 </p> <h2>OpenSMTPDの設定</h2> @@ -483,19 +516,74 @@ match auth from any for any action "outbound" </p> <pre><code>\ abuse@mtkn.xyz user@mtkn.xyz -portmaster@mtkn.xyz user@mtkn.xyz +postmaster@mtkn.xyz user@mtkn.xyz webmaster@mtkn.xyz user@mtkn.xyz user@mtkn.xyz vmail </code></pre> <p> -abuse, portmaster, webmasterはなんか一応作っとけみたいに書いてたけど\ +abuse, postmaster, webmasterはなんか一応作っとけみたいに書いてたけど\ 必要なんかな? </p> <h2>Dovecotの設定</h2> <p> MDAとして<code>dovecot(1)</code>をインストールする。\ +</p> +<pre><code>\ +# pkg_add dovecot +</code></pre> +<p> +dhparamを作成する(時間がかかる): +</p> +<pre><code>\ +# openssl dhparam -out /etc/ssl/dh.pem 4096 +</code></pre> +<p> +わかりにくい設定ファイルをどけてシンプルなものに書き直す: +</p> +<pre><code>\ +# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig +# vi /etc/dovecot/dovecot.conf +</code></pre> +<pre><code>\ +listen = * + +ssl = required + +ssl_cert = &lt;/etc/ssl/mail.mtkn.jp.fullchain.pem +ssl_key = &lt;/etc/ssl/private/mail.mtkn.jp.key +ssl_dh = &lt;/etc/ssl/dh.pem + +mail_location = maildir:~ + +passdb { + args = scheme=BLF-CRYPT /etc/mail/passwd + driver = passwd-file +} + +userdb { + args = uid=vmail gid=vmail home=/var/vmail/%d/%n + driver = static +} + +protocols = imap lmtp + +service imap-login { + inet_listener imaps { + port = 993 + ssl = yes + } + # Disable imap + inet_listener imap { + port = 0 + } +} +</code></pre> +<pre><code>\ +# rcctl start dovecot +# rcctl enable dovecot +</code></pre> <p> サーバーの証明書が更新される際に<code>dovecot(1)</code>も再読み込みされるように\ @@ -510,6 +598,15 @@ crontab -e ~ 2 * * * acme-client mail.mtkn.xyz && rcctl restart smtpd && rcctl reload dovecot </code></pre> +<h2>テスト</h2> +<p> +手元のメールクライアントから送受信のテストをする。\ +特にgmail等に送った際に迷惑メールに分類されないかどうか確認する。\ +以上の設定で、gmailへの送受信は問題なかった。\ +また、<code>neomutt(1)</code>、<code>thunderbird(1)</code>からログイン\ +及び送受信できることも確認した。\ +</p> + <h2>参考文献</h2> <ul> <li><a href="https://man.openbsd.org/smtpd">smtpd(8).OpenBSD Manual Pages</a></li> diff --git a/pub/draft/mailserver.html b/pub/draft/mailserver.html @@ -165,7 +165,7 @@ DNS MTA (example.com ddd.ddd.ddd.ddd) メールきたんやけどどないしょ? <---------------------------------------- - ここ(portmaster@mtkn.jp)に通報や。 + ここ(postmaster@mtkn.jp)に通報や。 (DMARCレコード) ----------------------------------------> @@ -225,7 +225,8 @@ pass proto tcp from any to any port { 25, 587, 993 } #mail <pre><code># pfctl -f /etc/pf.conf </code></pre> -<h2>DNSのAレコード、MXレコード、PTRレコードの設定</h2> +<h2>DNSの設定</h2> +<h3>A, MX, SPF, DMARC</h3> <p> DNSのレコードを設定する。ムームーDNSの場合、コントロールパネルにログインし、サイドバーからドメイン管理>ドメイン操作>ムームーDNSと進み、設定するドメインの変更ボタンをクリックすると設定画面がでるので、以下のように設定する:</p> <table> @@ -262,10 +263,26 @@ DNSのレコードを設定する。ムームーDNSの場合、コントロー <td>v=spf1 mx -all</td> <td></td> </tr> +<tr> +<td>_dmarc</td> +<td>TXT</td> +<td>v=DMARC1;p=reject;rua=mailto:postmaster@mtkn.jp</td> +<td></td> +</tr> </tbody> </table> -<p>PTRレコードを設定する。さくらのVPSの場合、VPS管理画面にログインし、ネットワーク>ホスト名逆引き登録と進み、カスタムホスト名に自分のドメイン名(mtkn.jp)を入力する。TODO: mail sub domain?? +<p> +ひとつめのAレコードは、ドメイン名(mtkn.jp)にIPアドレス(sss.sss.sss.sss)を紐付けるものである。ふたつめはmail.mtkn.jpのIPアドレスを登録するものである。みっつめのMXレコードは、このドメイン宛てのメール(user@mtkn.jp等)をどこのサーバーに送信するかを決めるものである。上記の設定では、mail.mtkn.jpに送信するようにしている。以上の設定で、user@mtkn.jp宛てのメールは、mail.mtkn.jpというサーバーに送信すればよいことが分かり、さらにこのサーバーのIPアドレスはsss.sss.sss.sssであることも分かる。 +</p> +<p> +次のTXTレコードはSPFレコードである。v=spf1でSPFのバージョンを示し、mxでドメインのMXレコードに登録されたIPアドレスからの送信を許可し、-allでそれ以外のIPアドレスからの送信を禁止している。 +</p> +<p> +最後のものはDMARCレコードである。v=DMARC1でバージョンを示し、p=rejectで、本人確認をクリアしなかったメールについて、その受信者が受信を拒否するように指定している。rua=mailto:postmaster@mtkn.jpでは、本人確認をクリアしなかったメールを受信した場合の通報先を指定している。</p> + +<h3>PTR</h3> +<p>PTRレコードを設定する。さくらのVPSの場合、VPS管理画面にログインし、ネットワーク>ホスト名逆引き登録と進み、カスタムホスト名に自分のドメイン名(mtkn.jp)を入力する。 </p> <h2>OpenSMTPDの設定</h2> @@ -383,17 +400,67 @@ match auth from any for any action "outbound" <p> <code>/etc/mail/virtuals</code>にはメールの転送を設定できる。以下のようにする:</p> <pre><code>abuse@mtkn.xyz user@mtkn.xyz -portmaster@mtkn.xyz user@mtkn.xyz +postmaster@mtkn.xyz user@mtkn.xyz webmaster@mtkn.xyz user@mtkn.xyz user@mtkn.xyz vmail </code></pre> <p> -abuse, portmaster, webmasterはなんか一応作っとけみたいに書いてたけど必要なんかな? +abuse, postmaster, webmasterはなんか一応作っとけみたいに書いてたけど必要なんかな? </p> <h2>Dovecotの設定</h2> <p> -MDAとして<code>dovecot(1)</code>をインストールする。 +MDAとして<code>dovecot(1)</code>をインストールする。</p> +<pre><code># pkg_add dovecot +</code></pre> +<p> +dhparamを作成する(時間がかかる): +</p> +<pre><code># openssl dhparam -out /etc/ssl/dh.pem 4096 +</code></pre> + +<p> +わかりにくい設定ファイルをどけてシンプルなものに書き直す: +</p> +<pre><code># mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig +# vi /etc/dovecot/dovecot.conf +</code></pre> +<pre><code>listen = * + +ssl = required + +ssl_cert = &lt;/etc/ssl/mail.mtkn.jp.fullchain.pem +ssl_key = &lt;/etc/ssl/private/mail.mtkn.jp.key +ssl_dh = &lt;/etc/ssl/dh.pem + +mail_location = maildir:~ + +passdb { + args = scheme=BLF-CRYPT /etc/mail/passwd + driver = passwd-file +} + +userdb { + args = uid=vmail gid=vmail home=/var/vmail/%d/%n + driver = static +} + +protocols = imap lmtp + +service imap-login { + inet_listener imaps { + port = 993 + ssl = yes + } + # Disable imap + inet_listener imap { + port = 0 + } +} +</code></pre> +<pre><code># rcctl start dovecot +# rcctl enable dovecot +</code></pre> <p> サーバーの証明書が更新される際に<code>dovecot(1)</code>も再読み込みされるように<code>cron(8)</code>に追加しておく: @@ -405,6 +472,10 @@ MDAとして<code>dovecot(1)</code>をインストールする。 ~ 2 * * * acme-client mail.mtkn.xyz && rcctl restart smtpd && rcctl reload dovecot </code></pre> +<h2>テスト</h2> +<p> +手元のメールクライアントから送受信のテストをする。特にgmail等に送った際に迷惑メールに分類されないかどうか確認する。以上の設定で、gmailへの送受信は問題なかった。また、<code>neomutt(1)</code>、<code>thunderbird(1)</code>からログイン及び送受信できることも確認した。</p> + <h2>参考文献</h2> <ul> <li><a href="https://man.openbsd.org/smtpd">smtpd(8).OpenBSD Manual Pages</a></li> diff --git a/pub/rss.xml b/pub/rss.xml @@ -5,8 +5,8 @@ <description>ウェブページの更新履歴</description> <language>ja-jp</language> <link>https://www.mtkn.jp</link> -<lastBuildDate>Tue, 16 Jan 2024 12:24:55 +0900</lastBuildDate> -<pubDate>Tue, 16 Jan 2024 12:24:55 +0900</pubDate> +<lastBuildDate>Tue, 16 Jan 2024 15:43:51 +0900</lastBuildDate> +<pubDate>Tue, 16 Jan 2024 15:43:51 +0900</pubDate> <docs>https://www.rssboard.org/rss-specification</docs> <item> <title>使用しているハードウェア、ソフトウェア</title>