commit d7c9c9df98b6b1e4036965fbb923a58c97e193ea
parent 7fb8a4bed146fae484fdb7b9f8872e7fb5140078
Author: Matsuda Kenji <info@mtkn.jp>
Date: Tue, 16 Jan 2024 12:25:07 +0900
update draft
Diffstat:
3 files changed, 153 insertions(+), 15 deletions(-)
diff --git a/man/draft/mailserver.html b/man/draft/mailserver.html
@@ -321,6 +321,12 @@ DNSのレコードを設定する。\
<td>mail.mtkn.jp</td>
<td>10</td>
</tr>
+<tr>
+<td></td>
+<td>TXT</td>
+<td>v=spf1 mx -all</td>
+<td></td>
+</tr>
</tbody>
</table>
@@ -331,8 +337,8 @@ PTRレコードを設定する。\
(mtkn.jp)を入力する。TODO: mail sub domain??
</p>
-<h2>OpenSMTPDの設定<h2>
-<h3>ユーザーの作成<h3>
+<h2>OpenSMTPDの設定</h2>
+<h3>ユーザーの作成</h3>
<p>
メールの送受信を担当するユーザーを作成する:\
</p>
@@ -373,6 +379,54 @@ PTRレコードを設定する。\
~ 2 * * * acme-client mail.mtkn.xyz && rcctl restart smtpd
</code></pre>
+<h3>ドメインキーの作成とDNSへの登録</h3>
+<p>
+OpenSMTPD用のDKIMフィルターをインストールする。
+</p>
+<pre><code>\
+# pkg_add opensmtpd-filter-dkimsign
+</code></pre>
+
+<p>
+ドメインキーとしてRSAの秘密鍵と公開鍵を作成する。\
+DNSのTXTレコードの制約により、鍵の長さは1024ビットにする。
+</p>
+<pre><code>\
+# openssl genrsa -out /etc/mail/dkim/private.key 1024
+# openssl rsa -in /etc/mail/dkim/private.key -pubout -out /etc/mail/dkim/public.key
+# chown -r _dkimsign:_dkimsign /etc/mail/dkim
+# chmod 0400 /etc/mail/dkim/private.key
+</code></pre>
+
+<p>\
+作成したドメインキーの公開鍵をDNSに登録する:\
+</p>
+<table>
+<thead>
+<tr>
+<th>サブドメイン</th>
+<th>種別</th>
+<th>内容</th>
+<th>優先度</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>selector1._domainkey.mail</td>
+<td>TXT</td>
+<td>v=DKIM1;k=rsa;p=<i>公開鍵</i></td>
+<td></td>
+</tr>
+</tr>
+</tbody>
+</table>
+
+<p>
+サブドメインのselector1は\
+以下のsmtpd.confの<code>filter-dkimsign</code>の-sオプションと\
+同じものであれば他のものでもいい。\
+</p>
+
<h3>/etc/mail/smtpd.confの設定</h3>
<p>
/etc/mail/smtpd.confを以下の通り変更:(TODO: 説明)\
@@ -385,6 +439,9 @@ table aliases file:/etc/mail/aliases
table passwd file:/etc/mail/passwd
table virtuals file:/etc/mail/virtuals
+filter dkim_sign proc-exec\\
+ "filter-dkimsign -d mail.mtkn.xyz -s selector1\\
+ -k /etc/mail/dkim/private.key" user _dkimsign group _dkimsign
filter check_rdns phase connect match !rdns disconnect "550 no rDNS."
filter check_fcrdns phase connect match !fcrdns disconnect "550 no FCrDNS."
@@ -392,13 +449,13 @@ smtp max-message-size 25M
listen on socket
listen on lo0
-listen on vio0 port 25 tls pki mtkn.jp hostname "mail.mtkn.jp"\
+listen on vio0 port 25 tls pki mtkn.jp hostname "mail.mtkn.jp"\\
filter { check_rdns, check_fcrdns }
-listen on vio0 mask-src port submission smtps pki mtkn.jp\
- hostname "mail.mtkn.jp" auth <passwd>
+listen on vio0 mask-src port submission smtps pki mtkn.jp\\
+ hostname "mail.mtkn.jp" auth <passwd> filter dkim_sign
action "local_mail" mbox alias <aliases>
-action "domain" maildir "/var/vmail/%{dest.domain:lowercase}/%{dest.user:lowercase}"\
+action "domain" maildir "/var/vmail/%{dest.domain:lowercase}/%{dest.user:lowercase}"\\
virtual <virtuals>
action "outbound" relay
@@ -420,8 +477,25 @@ match auth from any for any action "outbound"
<i>パスワードを入力し、エンター、Ctrl-D</i>
</code></pre>
-<h2>SSLの設定</h2>
+<p>
+<code>/etc/mail/virtuals</code>にはメールの転送を設定できる。\
+以下のようにする:\
+</p>
+<pre><code>\
+abuse@mtkn.xyz user@mtkn.xyz
+portmaster@mtkn.xyz user@mtkn.xyz
+webmaster@mtkn.xyz user@mtkn.xyz
+user@mtkn.xyz vmail
+</code></pre>
+<p>
+abuse, portmaster, webmasterはなんか一応作っとけみたいに書いてたけど\
+必要なんかな?
+</p>
+
<h2>Dovecotの設定</h2>
+<p>
+MDAとして<code>dovecot(1)</code>をインストールする。\
+
<p>
サーバーの証明書が更新される際に<code>dovecot(1)</code>も再読み込みされるように\
diff --git a/pub/draft/mailserver.html b/pub/draft/mailserver.html
@@ -256,14 +256,20 @@ DNSのレコードを設定する。ムームーDNSの場合、コントロー
<td>mail.mtkn.jp</td>
<td>10</td>
</tr>
+<tr>
+<td></td>
+<td>TXT</td>
+<td>v=spf1 mx -all</td>
+<td></td>
+</tr>
</tbody>
</table>
<p>PTRレコードを設定する。さくらのVPSの場合、VPS管理画面にログインし、ネットワーク>ホスト名逆引き登録と進み、カスタムホスト名に自分のドメイン名(mtkn.jp)を入力する。TODO: mail sub domain??
</p>
-<h2>OpenSMTPDの設定<h2>
-<h3>ユーザーの作成<h3>
+<h2>OpenSMTPDの設定</h2>
+<h3>ユーザーの作成</h3>
<p>
メールの送受信を担当するユーザーを作成する:</p>
<pre><code># useradd -m -c "Virtual Mail" -d /var/vmail -s /sbin/nologin vmail
@@ -291,6 +297,46 @@ DNSのレコードを設定する。ムームーDNSの場合、コントロー
~ 2 * * * acme-client mail.mtkn.xyz && rcctl restart smtpd
</code></pre>
+<h3>ドメインキーの作成とDNSへの登録</h3>
+<p>
+OpenSMTPD用のDKIMフィルターをインストールする。
+</p>
+<pre><code># pkg_add opensmtpd-filter-dkimsign
+</code></pre>
+
+<p>
+ドメインキーとしてRSAの秘密鍵と公開鍵を作成する。DNSのTXTレコードの制約により、鍵の長さは1024ビットにする。
+</p>
+<pre><code># openssl genrsa -out /etc/mail/dkim/private.key 1024
+# openssl rsa -in /etc/mail/dkim/private.key -pubout -out /etc/mail/dkim/public.key
+# chown -r _dkimsign:_dkimsign /etc/mail/dkim
+# chmod 0400 /etc/mail/dkim/private.key
+</code></pre>
+
+<p>作成したドメインキーの公開鍵をDNSに登録する:</p>
+<table>
+<thead>
+<tr>
+<th>サブドメイン</th>
+<th>種別</th>
+<th>内容</th>
+<th>優先度</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>selector1._domainkey.mail</td>
+<td>TXT</td>
+<td>v=DKIM1;k=rsa;p=<i>公開鍵</i></td>
+<td></td>
+</tr>
+</tr>
+</tbody>
+</table>
+
+<p>
+サブドメインのselector1は以下のsmtpd.confの<code>filter-dkimsign</code>の-sオプションと同じものであれば他のものでもいい。</p>
+
<h3>/etc/mail/smtpd.confの設定</h3>
<p>
/etc/mail/smtpd.confを以下の通り変更:(TODO: 説明)</p>
@@ -301,6 +347,9 @@ table aliases file:/etc/mail/aliases
table passwd file:/etc/mail/passwd
table virtuals file:/etc/mail/virtuals
+filter dkim_sign proc-exec\
+ "filter-dkimsign -d mail.mtkn.xyz -s selector1\
+ -k /etc/mail/dkim/private.key" user _dkimsign group _dkimsign
filter check_rdns phase connect match !rdns disconnect "550 no rDNS."
filter check_fcrdns phase connect match !fcrdns disconnect "550 no FCrDNS."
@@ -308,11 +357,14 @@ smtp max-message-size 25M
listen on socket
listen on lo0
-listen on vio0 port 25 tls pki mtkn.jp hostname "mail.mtkn.jp" filter { check_rdns, check_fcrdns }
-listen on vio0 mask-src port submission smtps pki mtkn.jp hostname "mail.mtkn.jp" auth <passwd>
+listen on vio0 port 25 tls pki mtkn.jp hostname "mail.mtkn.jp"\
+ filter { check_rdns, check_fcrdns }
+listen on vio0 mask-src port submission smtps pki mtkn.jp\
+ hostname "mail.mtkn.jp" auth <passwd> filter dkim_sign
action "local_mail" mbox alias <aliases>
-action "domain" maildir "/var/vmail/%{dest.domain:lowercase}/%{dest.user:lowercase}" virtual <virtuals>
+action "domain" maildir "/var/vmail/%{dest.domain:lowercase}/%{dest.user:lowercase}"\
+ virtual <virtuals>
action "outbound" relay
match from any for domain mtkn.jp action "domain"
@@ -328,8 +380,20 @@ match auth from any for any action "outbound"
<i>パスワードを入力し、エンター、Ctrl-D</i>
</code></pre>
-<h2>SSLの設定</h2>
+<p>
+<code>/etc/mail/virtuals</code>にはメールの転送を設定できる。以下のようにする:</p>
+<pre><code>abuse@mtkn.xyz user@mtkn.xyz
+portmaster@mtkn.xyz user@mtkn.xyz
+webmaster@mtkn.xyz user@mtkn.xyz
+user@mtkn.xyz vmail
+</code></pre>
+<p>
+abuse, portmaster, webmasterはなんか一応作っとけみたいに書いてたけど必要なんかな?
+</p>
+
<h2>Dovecotの設定</h2>
+<p>
+MDAとして<code>dovecot(1)</code>をインストールする。
<p>
サーバーの証明書が更新される際に<code>dovecot(1)</code>も再読み込みされるように<code>cron(8)</code>に追加しておく:
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 10:00:09 +0900</lastBuildDate>
-<pubDate>Tue, 16 Jan 2024 10:00:09 +0900</pubDate>
+<lastBuildDate>Tue, 16 Jan 2024 12:24:55 +0900</lastBuildDate>
+<pubDate>Tue, 16 Jan 2024 12:24:55 +0900</pubDate>
<docs>https://www.rssboard.org/rss-specification</docs>
<item>
<title>使用しているハードウェア、ソフトウェア</title>