#author("2025-10-13T00:01:10+00:00","","")
#contents()
** 最終型 [#tdd2cba2]
*** 起動スクリプト [#s4849cb7]
- &ref(mx2.sh);
 ssh -i "magu-tokyo-messenger.pem" ubuntu@ec2-54-168-145-135.ap-northeast-1.compute.amazonaws.com
- &ref(mx3.sh);
 ssh -i "magu-tokyo-messenger.pem" ubuntu@ec2-13-114-88-171.ap-northeast-1.compute.amazonaws.com

*** インスタンス情報 [#pb03c284]
- mx2 (mail2.hmuna.com)
|インスタンス名|i-0de57e328b2a18377 (mail2.hmuna.com)|h
|パブリック IPv4 アドレス|54.168.145.135|
|プライベート IPv4 アドレス|172.31.22.38|
|パブリック IPv4 DNS|ec2-54-168-145-135.ap-northeast-1.compute.amazonaws.com|
|プライベート IPv4 DNS|ip-172-31-22-38.ap-northeast-1.compute.internal|
|インスタンスタイプ|t2.medium|
|Elastic IP アドレス|54.168.145.135 (パブリック IP)|
|VPC ID|vpc-ddcb93b9|
|サブネット ID|subnet-a7d324ee|
|AMI ID|ami-02b658ac34935766f|
|AMI name|ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200908|
|終了保護|有効|
|AMI location|099720109477/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200908|
|キーペア名|magu-tokyo-messenger|
|vCPU|2|
|RAM|4GB|

- mx3 (mail3.hmuna.com)
|インスタンス名|i-02abb90c515dd92c1 (mail3.hmuna.com)|h
|パブリック IPv4 アドレス|13.114.88.171|
|プライベート IPv4 アドレス|172.31.4.225|
|パブリック IPv4 DNS|ec2-13-114-88-171.ap-northeast-1.compute.amazonaws.com|
|プライベート IPv4 DNS|ip-172-31-4-225.ap-northeast-1.compute.internal|
|インスタンスタイプ|t2.micro|
|Elastic IP アドレス|13.114.88.171 (パブリック IP)|
|VPC ID|vpc-ddcb93b9|
|サブネット ID|subnet-00072c58|
|AMI ID|ami-02b658ac34935766f|
|AMI name|ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200908|
|終了保護|有効|
|AMI location|099720109477/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200908|
|キーペア名|magu-tokyo-messenger|
|vCPU|1|
|RAM|1GB|
** 前段 [#q809a391]
*** 方針、戦略(と、途中での紆余曲折) [#zf828c4e]
- そもそも AWS のリザーブドインスタンス(3年契約)の有効期限なので更新を計画
-- なので Ubuntu 16.04(現状)→ 18.04 への更新、EBS サイズ(現状 128G) の縮小などは今回は実施しない当初方針
- EC2 の仕様を比較すると、3年前の t2.small は現在の t2.micro と性能的に同じだった
- 新規に3年前払いで t2.micro インスタンスを購入し、既存サーバーの置き換え作業を開始 
- ところが &color(red){リザーブドインスタンスというのはインスタンスの使用権であってインスタンス自体とは別}; である事が判明
- 実行中の &color(red){インスタンスと同じリザーブドインスタンスがある場合}; 費用がそちらに振り返られる仕組み
-- なのでリザーブドインスタンスを購入しても、起動可能なインスタンスのリストには出てこない
-- リザーブドインスタンスには有効期限があり該当インスタンスを実行していなくても権利は時間と共に減っていく仕組み
-- なのでリザーブドインスタンスと同じタイプ(グレード)のインスタンスを実行しないと全くの無駄になる
-- 未使用のリザーブドインスタンスを売ることができるが、米国内銀行に口座を持っていないと返金を受け取れない

- 今回先走って追加購入(次項)したインスタンスには既存サーバーを移行する事は出来ないと判明(トライした経緯は下記)
- 現状環境の継続利用には、t2.small リザーブドインスタンスを別に購入する必要がある ・・・・ が、流石にそれは馬鹿だろう

- t2.micro 上に Ubuntu18.04 メールサーバー環境を構築 → 試行開始で問題発覚 &color(red){(t2.micro の RAM容量 1GB ではサーバー動かない)};
- 結局作成したインスタンスを t2.small Ubuntu18.04 環境に移行 → 動くようになったと思われたが &color(red){実は 2GB でも不安定で落ちる事がある事が判明};
- &color(red){最終的に t2.medium (RAM 4GB) 環境に再度移行して動作安定};。 %%結局 t2.micro, t2.small のインスタンス3年前払いは(現時点では)無駄になった%%
- &color(red){t2.small RI x2 => t2.medium RI に変更できる}; 事が判明。 これで t2.small 購入分は無駄にならず活用できることになりそう
-- 無駄になったインスタンス利用権の活用は別途検討するが.... -> mail3.hmuna.com (2ndery MX) として稼働させた

*** 新戦略 [#sbb4c7cf]
- まず、急ぐ必要はない(リザーブドインスタンスが切れても、インスタンスは止まらない)が
+ t2.micro のリザーブドインスタンスの購入(済)
+ t2.micrro インスタンス(本番サーバー置き換え用)を作成
+ メールサーバー環境の構築(仮 IP、仮 証明書)
+ 旧サーバーインスタンスを停止
+ データ移行用インスタンスを起動
+ EBS新旧を移行用サーバーにマウントしメールサーバーのデータをオフライン移行
+ ELASTIC IP 付け替え、証明書移行 to 新サーバーインスタンス
+ 新サーバー稼働、テスト
+ 移行用サーバーインスタンスの停止
+ 経過観察後、問題なければ旧サーバーインスタンスの停止

** AWS 側の設定 [#q18ece37]
*** リザーブドインスタンスのダウングレード購入 [#gd2e839a]
 リザーブドインスタンス ID = 1f08ed93-6d03-45c0-8408-130000a5135a
- t2.micro (前回は t2.small だったが、性能的には同等なので実質値下げ)
-- t2.micro (@2020) = 1コア vCPU (最大 3.3 GHz)、1 GiB メモリ RAM、ストレージは EBS のみ
//-- &ref(instance.jpg);
-- t2.small (@2017) = 1コア vCPU (最大 3.3 GHz)、2 GiB メモリ RAM、128GB ストレージ
- 36ヶ月、全額前払い、スタンダード(コンバーティブルでない) で購入
- &color(red){$172 (前回は $395 だった)};
- &ref(reserved_update_202009.jpg);

*** t2.micro インスタンスの新規作成 [#k83be000]
- IAM に Ubuntu 18.04 を選択 [成果1]
- EBS(SSD) のサイズは 30GB とした [成果2]
- セキュリティグループは 現状環境(←メールサーバー用に設定)を継承 [効率化1]
- キーペアは現状のメールサーバーインスタンスと共通 [効率化2]
- %%Elastic IP (=公開されている mail.hmuna.com のアドレス)は移行完了するまで前サーバーに割当%%
- &color(red){当面のセットアップ用に Elastic IP = 54.168.145.135 を静的に割当し mail2.hmuna.com として DNS 公開した};
 インスタンス ID = i-062fad024bc6dd76b
 パブリック DNS (IPv4) = ec2-18-183-149-234.ap-northeast-1.compute.amazonaws.com
 IPv4 パブリック IP = 18.183.149.234
 インスタンスタイプ = t2.micro
 Elastic IP = 54.168.145.135*
 プライベート DNS = ip-172-31-31-75.ap-northeast-1.compute.internal
 アベイラビリティーゾーン = ap-northeast-1a
 プライベート IP = 172.31.20.94
 セキュリティグループ = magus-messenger-security
 -
 VPC ID = vpc-ddcb93b9
 AMI ID = ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20200903 (ami-08046c40513c3265e)
 プラットフォーム = Ubuntu
 サブネット ID = subnet-a7d324ee
 IAM ロール = (未定義)
 キーペア名 = magu-tokyo-messenger

*** t2.medium インスタンスの設定方針(最終的な形) [#e1aca36c]
- キーペアは既存のものを流用
- セキュリティグループも既存の設定を流用
- ボリュームも t2.micro 設定時に作った 30GB EBS イメージを流用(ここは 128GB → 30GB で月額利用料削減に寄与)
- Elastic IP も t2.micro 設定時に新設したグローバル IP (= mail2.hmuna.com) を再利用
- メールサーバー証明書は Let's Encrypt(無償)に切り替えたので、従来利用してきた有償版証明書は不要になった

*** 購入した t2.small を無駄にせず、差分を購入して t2.medium にアップグレード可能だった [#abe86232]

 2 つ以上の リザーブドインスタンス を単一の リザーブドインスタンス にマージすることもできます。
 たとえば、それぞれに 1 つのインスタンスがある 4 つの t2.small リザーブドインスタンス がある場合、
 これらをマージして 1 つの t2.large リザーブドインスタンス を作成できます。

- [[リザーブドインスタンス の変更:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ri-modifying.html]]
- [[インスタンスサイズの変更のサポート:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ri-modifying.html#ri-modification-instancemove]]
- [[Modifying Reserved Instances:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html]]
- [[EC2 Convertible Reserved Instance Update – New 1-Year CRI, Merges & Splits:https://aws.amazon.com/jp/blogs/aws/ec2-convertible-reserved-instance-update-new-1-year-cri-merges-splits/]]

*** が、しかし t2.small RI を追加で購入したが購入日付が違うためマージできず [#w6b4bf17]
- &ref(separate_RI.jpg);

 > EC2 t2.small リザーブドインスタンスを購入後、要件的に t2.medium が必要となり t2.small を
 > 追加購入して マージしようとしたが、購入日が異なるためにマージ出来ない状況になっています。
 > 後から購入したリザーブドインスタンスの有効期限を短くして、最初に購入したものと合わせる事は
 > 可能でしょうか
 
 リザーブドインスタンスにつきましては長期間のご利用を前提として安価料金のメリットを提供させて
 いただいておりますため、契約期間は短縮いただけません。お問い合わせくださいましたところ大変心苦しく
 存じますが、どうぞご理解くださいますようお願い申し上げます。
 
 なお、プラットフォームがLinux/UNIXのリザーブドインスタンスは、柔軟性により、オンデマンドインス
 タンスのサイズとリザーブドインスタンスのサイズが異なっておりましても、リザーブドインスタンスが
 オンデマンドインスタンスに適用される場合がございますこと補足申し上げます。
 詳細につきましては下記ページをご覧くださいますようお願い申し上げます。
--リージョンごとの、またはサイズが柔軟な Amazon EC2 リザーブドインスタンスはどのように働きますか?
---https://aws.amazon.com/jp/premiumsupport/knowledge-center/regional-flexible-ri/ 
-- サイズが柔軟な Amazon EC2 リザーブドインスタンスの計算方法を教えてください。
--- https://aws.amazon.com/jp/premiumsupport/knowledge-center/ri-size-flexibility/ 
-- AWSのコスト最適化/リザーブドインスタンス
--- https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-2017-cost-optimization-reserved-instance
--- &ref(AWS のコスト最適化リザーブドインスタンス.pdf);
--- &ref(AWSアンチパターンのご紹介.pdf);

*** オンデマンドインスタンスに スマートに RI 購入済クレジットを適用してくれる(無駄ではなかった) [#d9207d65]
 ご担当者様
 
 平素よりお世話になっております。AWSカスタマーサービスの喜屋武と申します。
 この度はご丁寧にご返信いただき、誠にありがとうございます。
 
 頂いたご質問内容に関しまして、下記の通りご回答差し上げます。
 (すでにご認識いただいている内容と重複する部分もあるかと存じますが、ご容赦頂ければ幸いです)
 
 【サイズが柔軟なRIに関しまして】
 RIの「柔軟性」というのは、RIが持っている性質のことです。
 (別途、設定する必要がなくRIを購入した時点で自動的に付与される性質とご認識くださいませ)
 
 RIは上記「柔軟性」により、正規化係数(フットプリント)に基づいて稼働しているインスタンスに「自動適用」されます。
 あくまでもコスト最適化の観点に基づいて、稼働しているインスタンスの状況に併せて「自動適用」されるため、
 「適用したいインスタンスを任意に選択することはできない」という点にご留意いただければと存じます。
 
 ■RIの柔軟性の具体例
 ※下記説明の前提として、t2.nanoの正規化係数は「0.25」。t2.smallの正規化係数は「1」。t2.mediumの正規化係数は「2」となります。
 例1)t2.smallのRIを2つ保持しているが、実際にはt2.mediumインスタンス1台のみ稼働している場合。
 正規化係数「2」がt2.medium1台(「2」)の稼働に対して適用されます。
 
 例2)t2.smallのRIを2つ保持しており、実際にはt2.smallを1台、t2.nanoインスタンス4台のみ稼働している場合。
 正規化係数「2」がt2.small1台(「1」)、t2.nanoインスタンス4台(「0.25*4=1」)の稼働に対して適用されます。
 
 ▼(ご参考)RIの正規化係数について
 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ri-modifying.html 
 「インスタンスサイズのフットプリント」の項目にサイズごとの正規化係数の記載がございます。
 
 【質問に対するご回答】
 > t2.small RI が2つあれば オンデマンドの t2.medium のコストに自動的に割り当てられる.... という理解で正しいでしょうか
 上記説明をもとにすると、お客様から頂いた上記質問に対する回答としましては、
 「 t2.small RI が2つあり、かつ稼働しているオンデマンドインスタンスが t2.medium1台のみであれば、
 t2.mediumのコストに自動的に割り当てられる」 ということになります。しかしながら、他にt2.smallなど
 別のインスタンスが稼働している場合には、t2.smallの稼働コスト分に割り当てられてしまう可能性がございますこと、
 ご承知おきくださいませ。
 
 ※前述の通り、必ずしも「t2.medium のコストに割り当てられる」とは断言できませんが、「コスト最適化」の
 観点に基づいて割り当てられますため、お客様が損を被ることはございませんので、ご安心くださいませ。

** サーバー設定 [#oe2ec9a3]
*** メールサーバー環境(virtual mailbox 対応)の構築 [#s4b806e6]
- これまでを継承し [[[ExRatione]A Mailserver on Ubuntu 18.04: Postfix, Dovecot, MySQL:https://www.exratione.com/2019/02/a-mailserver-on-ubuntu-18-04-postfix-dovecot-mysql/]] をフォロー ・・・・ [&ref(Ratione1804.pdf);] 

- [[20.04 版:https://ubuntu.tutorials24x7.com/blog/install-mail-server-on-ubuntu-20-04-lts-using-postfix-dovecot-and-roundcube]]

-- Postfix: sends and receives mail via the SMTP protocol.
-- Dovecot: a POP/IMAP server. It also handles user authentication.
-- Postgrey: greylists incoming mail ← これは使わない(遅延が問題になる)
-- amavisd-new: a manager for organizing various antivirus and spam checking content filters.
-- Clam AntiVirus: a virus detection suite.
-- SpamAssassin: for sniffing out spam in emails.
-- Postfix Admin: a web front end for administering mail users and domains.
-- Roundcube: a webmail interface for users.

- mysql
-- root pass = mysql_admin
-- mail pass = mail_password

- dovecot
-- /etc/dovecot/conf.d/10-ssl.conf の 
 ssl_protocols = !SSLv2 !SSLv3
は間違い(デフォルトで SSLv2 はサポートされないので指定自体がエラーになる)ので
 ssl_protocols = !SSLv3
に変更した。

- postfixadmin
-- setup pass = frex7785
-- admin = admin@hmuna.com
-- admin pass = setup pass

*** [[Postfix Admin:https://mail2.hmuna.com/postfixadmin/]] [#za69a6a5]
- pass = h77mailpass
-- &color(red){config.local.php の編集でハマった。ファイルの場所は /var/www/html に予めある。/var/www/html/postfixadmin に作ってはダメ。};
- 管理者
-- ID = admin@hmuna.com
-- pass = frex7785
- DomainKeys Identified Mail (DKIM) 設定
-- &color(red){opendkim-genkey の設定でハマった。 Web 記事に typo あり};
--- (誤) op/endkim-genkey -t -s dkim -d example.com
--- (正) opendkim-genkey -t -s dkim -d example.com
-- dkim.private = &ref(dkim.private);
-- dkim.txt = &ref(dkim.txt);
 dkim._domainkey	IN	TXT	( "v=DKIM1; h=sha256; k=rsa; t=y; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4hPQTnmZRZ4jbwmNYdr79JCcZ9c8nzssQgehALqCRuanFoUdjfSdw93XkhmfWBUVku3xYeFyKiB5sfkRhyXXpPNq1I/OUZLoJingt2vnFZK5Di9SV2m9oG7Fp9m1pQ09zRDVv0UcjlKzJhDNuKhtid+NM59M0eDvfLh2WDgrojkJXnp3jGKDqUDdh7LbwMOoaczTORxUr4Ycmv"  "ibV25cpgspYF29oL8HtqA7zeu3zPxan6AoyjqQCer68vBlocsSESeqrzki9Islc5XrFwaaCKRkWNSCRSRI1FFMTwEHg/1u20nimC4acHlGY8q5wRCx7qgm4g8xBGqpK7kCMs/shwIDAQAB" )  ; ----- DKIM key dkim for hmuna.com

-- 後で DNS に登録する dkim.txt レコード (改行なし、但し登録時の文字数制限があり、途中で "" で分割している、途中にスペースは入れない)

- localに(= 仮設の mail2.hmuna.com サーバー内で)メール転送を行ったところ clamAV に接続出来ないというエラー
 Sep 18 07:55:42 ip-172-31-22-209 amavis[1625]: (01625-01) (!)connect to /var/run/clamav/clamd.ctl failed, attempt #1: Can't connect to a UNIX socket /var/run/clamav/clamd.ctl: No such file or directory
 Sep 18 07:55:42 ip-172-31-22-209 amavis[1625]: (01625-01) (!)ClamAV-clamd: All attempts (1) failed connecting to /var/run/clamav/clamd.ctl, retrying (2)
 Sep 18 07:55:48 ip-172-31-22-209 amavis[1625]: (01625-01) (!)connect to /var/run/clamav/clamd.ctl failed, attempt #1: Can't connect to a UNIX socket /var/run/clamav/clamd.ctl: No such file or directory
 Sep 18 07:55:48 ip-172-31-22-209 amavis[1625]: (01625-01) (!)ClamAV-clamd av-scanner FAILED: run_av error: Too many retries to talk to /var/run/clamav/clamd.ctl (All attempts (1) failed connecting to /var/run/clamav/clamd.ctl) at (eval 113) line 659.\n
 Sep 18 07:55:48 ip-172-31-22-209 amavis[1625]: (01625-01) (!)WARN: all primary virus scanners failed, considering backups
 Sep 18 07:56:13 ip-172-31-22-209 amavis[1625]: (01625-01) (!)ClamAV-clamscan av-scanner FAILED: /usr/bin/clamscan KILLED, signal 9 (0009) at (eval 113) line 950.
 Sep 18 07:56:13 ip-172-31-22-209 amavis[1625]: (01625-01) (!!)AV: ALL VIRUS SCANNERS FAILED
-- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=829597
-- &color(red){[原因判明] t2.micro の1GBメモリーでは足りず oom が発生し clamav が kill されていたのが原因。 t2.small に変更し解決};
-- &color(red){[残念!]なので、結局先走って3年分のリザーブドインスタンスを購入してしまった t2.micro は(とりあえず)無駄となり、別途 t2.small を別途購入};

*** clamav がメモリーを喰い潰す問題(は、程度の差こそあれ t2.small でも発生) [#jebe26f4]
- 一日に一回程度 メモリー枯渇でシステムが死にそうになっている事が判明 → 重大欠点なので対策要
-- &ref(almost_oom.jpg);

- &color(red){[さらに残念!!] t2.small 2G メモリーでも状況によってメモリーが枯渇するケースがある事が判明};
- t2.medium 上で正常稼働した状態でのメモリー使用状況
-- &ref(ram_use.JPG);
-- clamavdaemon は RAM 上の SPAM データベースをロードするが、このサイズが 850MB 程度になっている。
-- 他の処理との関連で oom が発生し、SWAP Out などで CPU load 100% 状況が頻発している
- &color(red){とりあえず、リザーブドインスタンスは購入せずに t2.mediam (4G RAM) に移行して実行させる → サクサク動作する};
-- &ref(t2medium.jpg);


*** [[メールサーバーチェッカー:http://www.mail-tester.com/]] 10/10 を一発取得 [#n670e1ea]
- &ref(mail_test.jpg);

 Received: by mail-tester.com (Postfix, from userid 500)
 	id C671FA84CE; Wed, 23 Sep 2020 06:05:15 +0200 (CEST)
 Authentication-Results: mail-tester.com;
 	dkim=temperror (0-bit key; unprotected) header.d=hmuna.com header.i=@hmuna.com header.b=PkL3aRQl;
 	dkim-atps=neutral
 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail-tester.com
 X-Spam-Level: 
 X-Spam-Status: No/-0.2/5.0
 X-Spam-Test-Scores: DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,
 	DKIM_VALID_EF=-0.1,SPF_PASS=-0.001,URIBL_BLOCKED=0.001
 X-Spam-Last-External-IP: 54.168.145.135
 X-Spam-Last-External-HELO: mail2.hmuna.com
 X-Spam-Last-External-rDNS: mail2.hmuna.com
 X-Spam-Date-of-Scan: Wed, 23 Sep 2020 06:05:15 +0200
 X-Spam-Report: 
 	* -0.0 SPF_PASS SPF: sender matches SPF record
 	* -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from
 	*      envelope-from domain
 	* -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
 	*      author's domain
 	*  0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily
 	*       valid
 	* -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
 	*  0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was
 	*      blocked.  See
 	*      http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
 	*      for more information.
 	*      [URIs: hmuna.com]
 Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=54.168.145.135; helo=mail2.hmuna.com; envelope- from=public_mail@hmuna.com; receiver=test-iac1xgrmt@srv1.mail-tester.com 
 DMARC-Filter: OpenDMARC Filter v1.3.1 mail-tester.com 750C2A84CE
 Authentication-Results: mail-tester.com; dmarc=pass header.from=hmuna.com
 Authentication-Results: mail-tester.com;
 	dkim=temperror (0-bit key; unprotected) header.d=hmuna.com header.i=@hmuna.com header.b=PkL3aRQl; 
 	dkim-atps=neutral
 Received: from mail2.hmuna.com (mail2.hmuna.com [54.168.145.135])
 	(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))
 	(No client certificate requested)
 	by mail-tester.com (Postfix) with ESMTPS id 750C2A84CE 
 	for <test-iac1xgrmt@srv1.mail-tester.com>; Wed, 23 Sep 2020 06:05:11 +0200 (CEST)
 Received: from localhost (mail2.hmuna.com [127.0.0.1])
 	by mail2.hmuna.com (Postfix) with ESMTP id 86FD3BDD71
 	for <test-iac1xgrmt@srv1.mail-tester.com>; Wed, 23 Sep 2020 13:05:08 +0900 (JST)
 X-Virus-Scanned: Debian amavisd-new at mail2.hmuna.com
 Received: from mail2.hmuna.com ([127.0.0.1])
 	by localhost (ip-172-31-22-38.ap-northeast-1.compute.internal [127.0.0.1]) (amavisd-new, port 10024)
 	with ESMTP id wq3NdD-vsXbN for <test-iac1xgrmt@srv1.mail-tester.com>;
 	Wed, 23 Sep 2020 13:05:05 +0900 (JST)
 MIME-Version: 1.0
 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hmuna.com; s=dkim;
 	t=1600833905; bh=T3JVNWIKqLNE9srGASR8eT8PH5+lK4r3tOAkV8JFS1Q=;
 	h=Date:From:To:Subject:From;
 	b=PkL3aRQlA5kX1PJ3FWbN2Pd94Sd4B1eBvyvFY44qHUHwgDJB1vWEiO4mKYINqQ42H
 	 aIahl7OhJ9RG2WLDesyqdWmX1cZ3OnwX9GCjz5ShJYRYTYLkO9Bhaz2jkGRyra9azA
 	 T2hNxpgB+Egfosinbx+77PzFTmAxx1+L2hQXTnqKKC/Zntqc00i9gBaW62w9Sju67Q
 	 6qHazZjJZe3fX06UDYl6qarJzG9cwyXFqJh6X1jOyeR3Cvulq25N0TxYN/g/bC2R+l
 	 5hRmR7lELwkiQIFoQaPvqyHNYs1A0b7fR2JjZBQ33Ohrve+38z8LzwKjRSCkEGlp6z
 	 uUGacjdOvWy0A==
 Content-Type: text/plain; charset=US-ASCII;
  format=flowed
 Content-Transfer-Encoding: 7bit
 Date: Wed, 23 Sep 2020 13:05:05 +0900
 From: public_mail@hmuna.com
 To: test-iac1xgrmt@srv1.mail-tester.com
 Subject: test mail
 Message-ID: <b1cd71427944275c2fddffe817bb3aee@hmuna.com>
 X-Sender: public_mail@hmuna.com

*** [[メール統計監視(mailgraph):https://mail2.hmuna.com/mailgraph/mailgraph.cgi]] [#n489ce1d]
- インストール
 [AWS (sudo)]:/home/ubuntu# apt install rrdtool mailgraph
- /etc/apache2/site-available/mailgrah の設定
 [AWS (sudo)]:/home/ubuntu# cat /etc/apache2/sites-available/mailgraph.conf
 Alias /mailgraph /usr/share/mailgraph
 <Directory /usr/share/mailgraph>
     Options +FollowSymLinks +ExecCGI
     AddHandler cgi-script .cgi
     #Require local
     #Require ip 54.168.145.135/24
 
     AuthUserFile /etc/mailgraph/mailgraph-htpasswd
     AuthName "Mailgraph"
     AuthType Basic
     Require valid-user
 </Directory>
- アクセスユーザー制限 (/etc/mailgraph/mailgraph-htpasswd)
 [AWS (sudo)]:/home/ubuntu# htpasswd -c /etc/mailgraph/mailgraph-htpasswd admin
-- user = admin
-- pass = frex7785
- 起動
 [AWS (sudo)]:/home/ubuntu# a2enmod cgid
 [AWS (sudo)]:/home/ubuntu# a2ensite mailgraph 
 [AWS (sudo)]:/home/ubuntu# systemctl restart apache2 mailgraph 

-- &ref(mailgraph.jpg);

** メール振り分け処理 (procmail → dovecot-sieve に実装を変更) [#w245591e]
*** dovecot sieve インストール[#d20665c9]
- dovecot sieve
-- sieve は汎用メールのフィルタリング用言語で dovecot が対応している
- dovecot-managesieved
-- ユーザーごとのスクリプトコレクションを管理し有効/無効を簡単に切り替えられるようにするサービス
-- アップロードされたスクリプトの文法チェックとコンパイルも自動で行う(TCP ポート 4190番ポートで通信)
 sudo apt-get install dovecot-sieve dovecot-managesieved

*** virtual mailbox への対応 [#ibf95d35]
- From [[Devecot virtual-plugin manual:https://doc.dovecot.org/configuration_manual/virtual_plugin/]]
 Sieve filters with virtual mailboxes¶
 Using the sieve plugin with virtual mailboxes will cause dovecot to output a fatal exception error in it’s logs and crash. This is because 
 sieve can’t tell the difference between a virtual location and a maildir/mbox location due to the way it detects actions in the mailboxes.
 
 If you use virtual mailboxes that are configured in sieve, make sure that they point to the namespace which has a maildir/mbox location and 
 a unique prefix. If you don’t, sieve will crash trying to copy a message to a virtual mailbox.

- /etc/dovecot/conf.d/90-sieve.conf (上記の対応のため)
-- &color(red){/var/vmail/%d/%n/sieve にユーザが作成したsieveスクリプトを保存します。};
-- &color(red){そのsieveスクリプトへのシンボリックリンクが /var/vmail/%d/%n/.dovecot.sieve に張られます。};
 plugin {
   sieve = file:/var/vmail/%d/%n/sieve;active=/var/vmail/%d/%n/.dovecot.sieve
   sieve_default = /var/lib/dovecot/sieve/default.sieve
   sieve_global = /var/lib/dovecot/sieve/global/
 }

*** managesieve[#e07381ec]
- /etc/dovecot/conf.d/20-managesieve.conf
-- 4190番のポートを使用してメールクライアントと通信するように設定
 service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
    service_count = 0
 }
 
 service managesieve {
 
 }
 
 protocol sieve {
 
 }

- sieve の有効化確認
-- &color(red){AWS セキュリティグループ(magus-messenger-security)に 4190番ポートへのアクセス許可を追加};
-- dovecot 再起動後にクライアントから sieve-managed で接続すると サーバーで 4190番ポートで通信が確立
 [AWS (sudo)]:/home/ubuntu# lsof -i:4190
 COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
 dovecot   15832     root   19u  IPv4 206231      0t0  TCP *:sieve (LISTEN)
 dovecot   15832     root   20u  IPv6 206235      0t0  TCP *:sieve (LISTEN)
 managesie 17577 dovenull    7u  IPv4 206231      0t0  TCP *:sieve (LISTEN)
 managesie 17577 dovenull    8u  IPv6 206235      0t0  TCP *:sieve (LISTEN)
 managesie 17577 dovenull   19u  IPv4 239438      0t0  TCP ip-172-31-22-38.ap-northeast-1.compute.internal:sievefs76eeeb6d.tkyc601.ap.nuro.jp:44732 (ESTABLISHED)

-- Thanderbird クライアントに plug-in をインストールし、[メッセージフィルター] - [sieve message filter(s)] を起動
--- サーバーがサポートするフィルター機能を確認
--- &ref(thander_sieve.jpg);

*** sieve programing [#c5e21e9b]
- (動いたので)使い方
-- 各ユーザーのバーチャルメールディレクトリ (/var/vmail/hmuna.com/(アカウント名)/) 下に sieve ディレクトリーを作成
-- (重要)sieve ディレクトリー以下のオーナーを vmail.mail に変更する
-- Thanderbird に plug-in をインストールし メニューから sieve フィルターを Activate する
-- &ref(ThanderSieve.jpg);

- [[プログラミングルール (TFC5528):https://www.ietf.org/rfc/rfc5228.txt]]
-- &ref(rfc5228.pdf);
-- &ref(RFC 3894.pdf); <---- fileinto, discard 時にコピーを残す拡張 (keep を発行すると以降のコマンドは無効になるので)
-- &ref(sievehow-to.pdf);

- Thanderbird 等のメールクライアント上 sieve のプログラミングができるようになっている
-- 保存したスクリプトはサーバーの /var/vmail/hmuna.com/public_mail ディレクトリ内の sieve というファイル
-- Action ボタンを押すと /var/vmail/hmuna.com/public_mail/.dovecot.sieve にシンボリックリンクが張られる

*** sieve example [#lf72ed82]
- &ref(sieve_orig); <-- 実際の設定(下記は抜粋)
 require ["copy","fileinto","regex","body"];
 
 ####################################################################
 # Strong Black List : Hard Force delete
 ####################################################################
 if header :contains "from" "news-keymans@mail.recruit.co.jp*" { discard; stop; }
 if header :contains "from" "@umaimizu.jp|@netrition.com" { discard; stop; }
 if header :contains "from" "@netrition.com" { discard; stop; }
 if header :contains "from" "e-frontier.info" { discard; stop; }
 
 if allof ( header :contains "to" "magu@angel.email.ne.jp", header :contains "from" "@em.mynavi.jp" ) { discard; stop; }
 if allof ( header :contains "to" "magu@angel.email.ne.jp", header :contains "from" "@tmn.mynavi.jp" ) { discard; stop; }
 if allof ( header :contains "to" "magu@angel.email.ne.jp", header :contains "from" "v-mail@dmm.co.jp" ) { discard; stop; }
 
 
 ####################################################################
 # For security, copy all incoming messages to backup folder first
 ####################################################################
 fileinto :copy "INBOX._backup";
 
 
 ####################################################################
 # White List : Force copy to INBOX 
 ####################################################################
 if header :contains "from" "nbonline@nikkeibp.co.jp" { keep; }
 if header :contains "from" "wis_news@blwisdom.com" { keep; }
 if header :contains "from" "mail-info@diamond.co.jp" { keep; }
 if header :contains "from" "@linuxfoundation.org" { keep; }
 
 
 ####################################################################
 # Black List : Force delete (but, still in _backup folder)
 ####################################################################
 if header :contains "from" "@netrition.com" { discard; stop; }
 if header :contains "from" "@joshin.co.jp" { discard; stop; }
 if header :contains "from" "@toshibadirect.jp" { discard; stop; }
 if header :contains "from" "english@mag2.com" { discard; stop; }
 if header :contains "from" "@sfjazz.org" { discard; stop; }
 
 
 ####################################################################
 # direct move to pre-defined folfer (ML etc)
 ####################################################################
 if header :contains "from" "umemura@shop.rakuten.co.jp" { fileinto "INBOX.Message_saved.Shopping.Umemura"; }
 if header :contains "from" "rakuten.co.jp" { fileinto "INBOX.Message_saved.Shopping.Rakuten"; }
 if header :contains "from" "@amazon.co.jp" { fileinto "INBOX.Message_saved.Shopping.Amazon"; }
 if header :contains "from" "@justsystem.co.jp" { fileinto "INBOX.Message_saved.Shopping.JustSystem"; }
 
 
 ####################################################################
 # Message with SPAM flag force move to spam@hmuna.com
 ####################################################################
 if header :contains "X-Spam-Status" "Yes" { fileinto "INBOX._spam"; }
 
 
 ####################################################################
 # SPAM manual list : Force move to SPAM folder
 ####################################################################
 if header :contains "from" "@specialmovie.com" { fileinto "INBOX._spam"; }
 if header :contains "from" "@specialmovie.com" { fileinto "INBOX._spam"; }
 if header :contains "from" "@spnews.com" { fileinto "INBOX._spam"; }
 if header :contains "from" "@stationcasinos.com" { fileinto "INBOX._spam"; }
 
 if header :contains "to" "licram.com" { fileinto "INBOX._spam"; }
 if header :contains "to" "hanmail.net" { fileinto "INBOX._spam"; }
 if header :contains "to" "public_mafia@yahoo.com" { fileinto "INBOX._spam"; }

//*** 動いたが期待通りの振り分けにならない [#mefc177c]
//- backup へのコピーは正常、続きを処理するのも正常、junk に移動も正常、&color(red){その後 spam に行くのはおかしい};
// Sep 25 15:40:18 ip-172-31-22-38 dovecot: lda(public_mail@hmuna.com): sieve: msgid=<C_M_M_I_D.21_19_475851_0_27711.185889.1601016014@cmreturn.nikkeibp.co.jp>: stored mail into mailbox 'INBOX._backup'
// Sep 25 15:40:18 ip-172-31-22-38 dovecot: lda(public_mail@hmuna.com): sieve: msgid=<C_M_M_I_D.21_19_475851_0_27711.185889.1601016014@cmreturn.nikkeibp.co.jp>: stored mail into mailbox 'INBOX._junk'
// Sep 25 15:40:18 ip-172-31-22-38 dovecot: lda(public_mail@hmuna.com): sieve: msgid=<C_M_M_I_D.21_19_475851_0_27711.185889.1601016014@cmreturn.nikkeibp.co.jp>: stored mail into mailbox 'INBOX._spam'

- backup へのコピーは正常、続きを処理するのも正常、&color(red){でも spam に行くのはおかしく、その後さらに INBOX に届くのも謎};
 Sep 25 16:05:19 ip-172-31-22-38 dovecot: lda(public_mail@hmuna.com): sieve: msgid=<20200925152251878.6295@mas.jcb.local>: stored mail into mailbox 'INBOX._backup'
 Sep 25 16:05:19 ip-172-31-22-38 dovecot: lda(public_mail@hmuna.com): sieve: msgid=<20200925152251878.6295@mas.jcb.local>: stored mail into mailbox 'INBOX._spam'
 Sep 25 16:05:19 ip-172-31-22-38 dovecot: lda(public_mail@hmuna.com): sieve: msgid=<20200925152251878.6295@mas.jcb.local>: stored mail into mailbox 'INBOX'

*** sieve debug [#cbc3d59e]
-  /etc/dovecot/conf.d/90-sieve.conf のトレースオプションを有効にする
- 一回毎の sieve フィルター処理結果が記録される
- ファイル数が膨大になるのでデバッグ時以外は無効に戻す 
 ## TRACE DEBUGGING↲
 # Trace debugging provides detailed insight in the operations performed by↲
 # the Sieve script. These settings apply to both the LDA Sieve plugin and the↲
 # IMAPSIEVE plugin.-↲
 #↲
 # WARNING: On a busy server, this functionality can quickly fill up the trace↲
 # directory with a lot of trace files. Enable this only temporarily and as↲
 # selective as possible.↲
  --↲
 # The directory where trace files are written. Trace debugging is disabled if↲
 # this setting is not configured or if the directory does not exist. If the-↲
 # path is relative or it starts with "~/" it is interpreted relative to the↲
 # current user's home directory.↲
 sieve_trace_dir = /var/vmail/%d/%n/↲
  --
 # The verbosity level of the trace messages. Trace debugging is disabled if↲
 # this setting is not configured. Possible values are:↲
 #↲
 #   "actions"        - Only print executed action commands, like keep,↲
 #                      fileinto, reject and redirect.↲
 #   "commands"       - Print any executed command, excluding test commands.↲
 #   "tests"          - Print all executed commands and performed tests.↲
 #   "matching"       - Print all executed commands, performed tests and the↲
 #                      values matched in those tests.↲
 sieve_trace_level = actions↲


*** 参考 URL [#ab2f4d8b]
-- [[(dovecot 公式) Pigeonhole Sieve support:https://wiki.dovecot.org/Pigeonhole]]
-- [[(dovecot 公式) Pigeonhole Installation:https://wiki.dovecot.org/Pigeonhole/Installation]]
-- [[(dovecot 公式) Pigeonhole Sieve Interpreter:https://wiki.dovecot.org/Pigeonhole/Sieve]]
-- [[(dovecot 公式) Pigeonhole Sieve examples:https://wiki.dovecot.org/Pigeonhole/Sieve/Examples]]
-- [[(dovecot 公式) Pigeonhole ManageSieve Server:https://doc.dovecot.org/admin_manual/pigeonhole_managesieve_server/]]

-- [[Sieve Syntax and Common Recipes:https://www.pair.com/support/kb/sieve-syntax-and-common-recipes/]]
-- [[thsmi/sieve (Sieve Editor for Thanderbird):https://github.com/thsmi/sieve/blob/master/README.md]]
-- [[DovecotとSieveを使ったメールのサーバーサイドフィルタリング:https://www.infiniteloop.co.jp/blog/2015/07/email-filtering-by-sieve/]]
-- [[dovecot official:https://doc.dovecot.org/configuration_manual/sieve/]]
-- [[Arch Linux Dovecot:https://wiki.archlinux.jp/index.php/Dovecot#Sieve]]
-- [[サーバーサイドのメール振り分けを maildrop から Pigeonhole Sieve に:https://blog.cles.jp/item/9054]]
-- [[【Linux CentOS 7】dovecotにおいてsieveを導入しサーバーサイドでメールフィルタリングや保存フォルダ指定を行うための設定:http://akira-arets.blogspot.com/2019/01/linux-centos7-dovecot-sieve.html]]
-- [[Sieve 入れてみた:https://88171.net/installed-dovecot-sieve-plugin]]
-- [[メールサーバ移行計画(1) – メールサーバ構築 Postfix + Dovecot:https://www.rough-and-cheap.jp/linux/ubuntu18-04_postfix_dovecot/#etcdovecotconfd90-sieveconf]]

** 2ndery MX (mail3.hmuna.com) の立ち上げ [#zaebf54e]
- 今回使わなくなった t2.micro を活用する意味で(本来は必須ではない)2ndery MX サーバーを立ち上げることにする
- メモリー喰いの clamav などフィルター系の処理は動かさない
- その他の設定は primary MX に合わせる
*** mailserver 設定 [#ndef67a1]
- server = mail3.hmuna.com (13.114.88.171)
- インストール除外としたパッケージ
-- postgrey
-- amavis
-- clamav
-- clamav-daemon

- main.cf の中で 127.0.0.1:10023 に送ってチェックする設定を無効にする
-- main.cf -----> &ref(mx2_main.cf);
-- master.cf ---> &ref(mx2_master.cf);

- MX1 を止めた状態でメールが MX2 に転送され保存されているログ(MX1 への転送は deffered になっている)

 Sep 29 00:51:09 mail3 postfix/smtps/smtpd[17902]: Anonymous TLS connection established from unknown[212.70.149.68]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
 Sep 29 00:51:14 mail3 postfix/smtpd[17891]: connect from mail-il1-f179.google.com[209.85.166.179]
 Sep 29 00:51:15 mail3 postfix/smtpd[17891]: Anonymous TLS connection established from mail-il1-f179.google.com[209.85.166.179]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 Sep 29 00:51:15 mail3 policyd-spf[17896]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.166.179; helo=mail-il1-f179.google.com; envelope-from=magu775@gmail.com; receiver=<UNKNOWN>
 Sep 29 00:51:15 mail3 postfix/smtpd[17891]: 97164454DC: client=mail-il1-f179.google.com[209.85.166.179]
 Sep 29 00:51:15 mail3 postfix/cleanup[17897]: 97164454DC: message-id=<CAK8HeGNGVr7Wd+XgY=4p6Y8=s5KZv7K_6uyHovhc3irSTpU=MA@mail.gmail.com>
 Sep 29 00:51:15 mail3 postfix/qmgr[17887]: 97164454DC: from=<magu775@gmail.com>, size=19800, nrcpt=1 (queue active)
 Sep 29 00:51:15 mail3 postfix/smtp[17898]: connect to mail2.hmuna.com[54.168.145.135]:25: Connection refused
 Sep 29 00:51:15 mail3 postfix/smtp[17898]: 97164454DC: to=<public_mail@hmuna.com>, relay=none, delay=0.63, delays=0.61/0.01/0/0, dsn=4.4.1, status=deferred (connect to mail2.hmuna.com[54.168.145.135]:25: Connection refused)
 Sep 29 00:51:16 mail3 postfix/smtpd[17891]: disconnect from mail-il1-f179.google.com[209.85.166.179] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7




*** DB レプリケーションの設定 [#ade9bab9]

** 202202:後日更新 (SPF レコード非推奨化に伴う DNS レコードの変更) [#v92ab422]
- 20220220 に三鷹メインPC(Legion Ti500) への windows11 再インストールを実施
- Kaspersky が hmuna.com は怪しいドメインであると警告を発するようになった
- [[メールテスター:https://www.mail-tester.com/]] で確認したところスコアは 5.7/10 となった
-- SPF レコードが不正
-- DKIM レコードが不正

- [[SPF レコードチェッカー:https://www.kitterman.com/spf/validate.html]] でテストを行ったが &color(red){SPF レコードが無効}; となった
- SPF/DKIM は AWS Route53 のドメイン情報として登録していた
-- SPF 型の定義、同じ内容を TXT としても定義するのが当時の方法だった
-- その後 &color(red){SPF 型の定義が RFC7208 で非推奨(実質使用禁止)になっていた}; ことがわかった
--- [[RFC7208:https://datatracker.ietf.org/doc/html/rfc7208#section-14.1]]

- Route53 のレコードから SPF 型の宣言を削除し DNS レコードを更新した。
-- SPF レコードの削除
-- TXT レコードも一度削除し再追加(しないとレコードの更新にならなかった)
-- 合わせて hmuna.com の A レコードが MX3 を指していたのを MX2 に変更した(hmuna.com のリバース検索を正しくするため)
-- 更新後の DNS レコード
-- &ref(route53_20220222.jpg);
-- [[Route 53 で SPF レコードを正常に作成しましたが、他のメールプロバイダーがレコードを識別できません:https://aws.amazon.com/jp/premiumsupport/knowledge-center/route53-spf-record/]]
- 上記変更後に [[メールテスター:https://www.mail-tester.com/]] で確認したところ [[10/10:https://www.mail-tester.com/test-q5pd5w4hg]] に復帰した。
-- 結局 DKIM レコードについては変更していない(SPF レコードが無効だった事の副作用と考えられる)
-- &ref(score_20220222.jpg);
-- &ref(message_header.jpg);

*** [2025-04]DKIM レコードの修正 [#raee17f0]
- 再度上記の [[テスト:https://www.mail-tester.com/]] を実行したところ DKIM レコードの不備を指摘された。
- &ref(dkim_warning.jpg);
- &color(red){V= の設定と p= の設定が分割されていることがこのエラーの原因}; として想定された(ChatGPT と会話して特定した)
- 本来の姿
-- dig +short TXT dkim._domainkey.hmuna.com で出力が 以下のような1セットに統一されていること
 "v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A..."
 "中間部分"
 "末尾部分"
- Route53 の DKIM を以下のように書き換えた ---> &ref(updated_dkim.txt);
 "v=DKIM1;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4hPQTnmZRZ4jbwmNYdr79JCcZ9c8nzssQgehALqCRuanFoUdjfSdw93XkhmfWBUVku3xYeFyKiB5sfkRhyXXpPNq1I/OUZLoJingt2vnFZK5Di9SV2m9oG7Fp9m1pQ09zRDVv0UcjlKzJhDNuKhtid+NM59M0eDvfLh2WDgrojkJXnp3jGK"
 "DqUDdh7LbwMOoaczTORxUr4YcmvibV25cpgspYF29oL8HtqA7zeu3zPxan6AoyjqQCer68vBlocsSESeqrzki9Islc5XrFwaaCKRkWNSCRSRI1FFMTwEHg/1u20nimC4acHlGY8q5wRCx7qgm4g8xBGqpK7kCMs/shwIDAQAB"

- 別のLinuxマシン(ここではWindows上のWSL環境)でDNS情報が正しくなっていることを確認
 munakata@PGMIT:/mnt/c/Users/magu7$ dig +short TXT dkim._domainkey.hmuna.com
 "v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4hPQTnmZRZ4jbwmNYdr79JCcZ9c8nzssQgehALqCRuanFoUdjfSdw93XkhmfWBUVku3xYeFyKiB5sfkRhyXXpPNq1I/OUZLoJingt2vnFZK5Di9SV2m9oG7Fp9m1pQ09zRDVv0UcjlKzJhDNuKhtid+NM59M0eDvfLh2WDgrojkJXnp3jGK"
 "DqUDdh7LbwMOoaczTORxUr4YcmvibV25cpgspYF29oL8HtqA7zeu3zPxan6AoyjqQCer68vBlocsSESeqrzki9Islc5XrFwaaCKRkWNSCRSRI1FFMTwEHg/1u20nimC4acHlGY8q5wRCx7qgm4g8xBGqpK7kCMs/shwIDAQAB"

- &color(red){''超重要な発見'':Route53のレコード登録画面でDKIMレコードを追加する時には、長い文字列(=公開鍵)を分割して入れる必要がある。};
- &color(red){分割時にクオートで文字列を区切る必要があり。更に''後続行がある文字列にはクオートの外にスペースを追加する''。};
- &color(red){''スペースの後ろに改行文字があってはならない。''};
- &color(red){UI的に勝手に改行されるが、そこに明示的に改行が入っていると複数の分割されたレコードとして登録されてしまう。ここでおおはまりした。};

- DKIM チェックツール
-- [[DKIMCore(DKIM専用チェッカー):https://dkimcore.org/tools/keycheck.html]]
-- [[MXToolbox(一般的な検証ツール):https://mxtoolbox.com/dkim.aspx]]

- DKIM 修正後、満点に戻った
-- &ref(DKIM_revised_202504.png);

** Route53 Zone 設定 [#v1733458]
- &ref(R53_zone_202504.txt);
 munakata@muna-U2404:~/.aws$ cli53 export hmuna.com
 $ORIGIN hmuna.com.
 @	900	IN	SOA	ns-1787.awsdns-31.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
 @	86400	IN	MX	10 mail2.hmuna.com.
 @	86400	IN	MX	100 mail3.hmuna.com.
 @	172800	IN	NS	ns-1787.awsdns-31.co.uk.
 @	172800	IN	NS	ns-104.awsdns-13.com.
 @	172800	IN	NS	ns-1508.awsdns-60.org.
 @	172800	IN	NS	ns-762.awsdns-31.net.
 @	86400	IN	TXT	"v=spf1 ip4:54.168.145.135 a mx ~all"
 _dmarc	3600	IN	TXT	"v=DMARC1; p=none"
 dkim._domainkey	3600	IN	TXT	"v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyaf8dMzZ3PFxuHaD7d2GyRh0bKMnO8g" "Jcxa8sx0HIBa8BshOF8FIivd4uCwBgP6T+LmLvRWnfWTIK0nojZqLSUSc/LHX1EI3VXRycjxdB0pL+kFqStUY3UBoG2mTiVd9IO9ovrfZOEH0EmnWwFEPR0rz8XciPXnXqBmQqXwdY5nbR9L6ons" 
 "VVuoz39001Tmxgk3GKfC+xsxTBAPHYQBAVTZZoftsGW2XuAxf+av84tpJ5QcibNjwCbaKY4Usqgww17f5PqZrR14hPHdTH1HR5kdPRkTKEAk2xJlcWCHGr7thE38Vz/4dQe7pbxksZEv+h0O01Xe80hvNZlJA0JyqjwIDAQAB"
 kgb2	3600	IN	CNAME	mythen
 mail2	3600	IN	A	54.168.145.135
 mail3	3600	IN	A	13.114.88.171
 mumit	3600	IN	CNAME	mythen
 mythen	86400	IN	A	124.155.55.64
 svr	86400	IN	CNAME	mythen
 tvr	3600	IN	CNAME	mythen

** Sieve レシピ [#w27dbc3b]
- &ref(sieve.sieve,center,[2025-04]);
- &ref(sieve.sieve_20250414,center,[2025-04-14]);
- &ref(sieve.sieve_20250902,center,[2025-09-02]);
- &ref(sieve.sieve_20250911,center,[2025-09-11]);
- &ref(sieve.sieve_20251013,center,[2025-10-13]);

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS