[Postfix] キュー操作、送信テストのコマンド

たまにしか使わないので備忘録。

ログファイル

キューの操作

現在のキューの一覧。

キューの削除。

全てのキューを削除。

キューを送信。

メール送信

sendmailを使う。

mailを使う。

telnetを使う。

参考サイト

Postfixのメールキューを確認、削除する方法 – Qiita
https://qiita.com/pb_tmz08/items/60c760d71da00fcf5d9b

[AWS] EC2/PostfixからAmazon SES経由でメール送信する

EC2にPostfixをインストールしてメールを送りたいのだけど、実はEC2からのメール送信(正確にはポート25のトラフィック)は制限されている。

よくある質問 – Amazon EC2 | AWS
https://aws.amazon.com/jp/ec2/faqs/#Are_there_any_limitations_in_sending_email_from_EC2_instances

Amazon Elastic Compute Cloud (EC2) では 2020年1月27日より、お客様やほかの受信者の皆さまをスパムやEメールの不正使用から守るために、デフォルトでポート25のEメールトラフィックを制限することになりました。ポート25は、Eメール送信用のデフォルトのSMTPポートとして広く使われています。過去にポート25スロットルをリクエストして、削除したことのあるAWSアカウントには、今回の変更による影響はありません。

では、EC2からメールを送信したければどうするか?

  • AWSにポート25の制限解除を申請する、あるいは
  • Amazon SES (Simple Email Service) を利用する

Amazon SESとは?

Amazon SES(高可用性で低価格なEメール送信サービス)| AWS
https://aws.amazon.com/jp/ses/

Amazon SES 料金:
Amazon Simple Email Service (SES) は、送受信される E メールの量に基づく従量制料金のサービスです。サブスクリプションや契約交渉、最低料金はありません。

AWS 無料利用枠:
Amazon EC2 または AWS Lambda 経由でホストされているアプリケーションから Amazon SES を呼び出した場合、月に 62,000 通のメッセージまでは無料で送信できます。この無料利用枠の有効期限はありません。

自分がメールを必要とするのは

  • ウェブアプリからの通知を受け取りたい (自分宛)
  • バッチプログラムの結果を受け取りたい (自分宛)

というわけで、1日にせいぜい10通程度のメールを自分が受け取るだけ。

Amazon SESの無料枠で充分そうなので、以下セットアップする。

  1. Amazon SESをセットアップする
  2. EC2のPostfixからAmazon SES経由でメール送信できるようにする

Amazon SESをセットアップする

(1) メアドのベリファイ

  • AWSコンソールのAmazon Simple Email Serviceにアクセス
  • Identity Management>Email Addresses
  • [Verify a New Email Address]をクリック
  • Email Address:にメアドを入力して[Verify This Email Address]をクリック
  • 入力したメアド宛てに確認メールが届くので、本文中のリンクをクリック
  • Verification Statusがpending verificationからverifiedに変わる

(2) サンドボックスについて

Email Sending>Sending Statistics をクリックすると以下の説明がある。

Your account details
Your Amazon SES account has “sandbox” access in region US West (N. California). When in the sandbox, you can only send email to the Amazon SES mailbox simulator and verified email addresses or domains. Request to be moved out of the sandbox by updating your account details. Learn more.
Can’t find your existing account settings? Your account may be set up in a different AWS region. Try switching regions in the top navigation bar.

「初期状態ではSESアカウントはサンドボックスアクセスになっていて、SESメールボックスシミュレータとベリファイ済みメアドにしかメール送信できない。サンドボックスを解除するには申請が必要」と言っているが、自分の場合は自分宛て(ベリファイ済みメアド)しかメールしないので、サンドボックスのままにしておく。

(3) SMTP設定

  • Email Sending>SMTP Settings
  • SMTP経由でメールを送るのに必要な情報が表示されるのでメモする
    Server Name: email-smtp.us-west-1.amazonaws.com
    Port: 25, 465 or 587
    Use Transport Layer Security (TLS): Yes
  • [Create My SMTP Credentials]をクリック
  • IAM User Nameを入力 (デフォルトのままでも可)
  • [Create]をクリック
  • SMTP UsernameとSMTP Passwordが作成されるのでメモする

EC2のPostfixからAmazon SES経由でメール送信できるようにする

公式サイトの手順をなぞる。

Amazon SES とPostfixの統合 – Amazon Simple Email Service Classic
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/postfix.html

sendmailをアンインストール (もしインストールされていたら)。

Postfixをインストール。

SASL認証パッケージをインストール。

後でテストとかバッチ処理で使うのでmailコマンドをインストール。

Postfixの設定 (メールサーバー: email-smtp.xxxxx は適宜変更)。

テスト送信 (自分から自分宛に送る)。

メール届いた (Gmailで受信)。ヘッダは以下の感じで、SPFもDKIMも設定されている。

参考サイト

Amazon SES とPostfixの統合 – Amazon Simple Email Service Classic
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/postfix.html

Postfixからの送信を全てSES経由に変更する – Qiita
https://qiita.com/fantasista_21jp/items/e227f802095a0049a8d0

【AWS】EC2インスタンスからPostfix + SESで外部へシステムメールを送信 | 電算星組
https://densan-hoshigumi.com/aws/aws-postfix-ses-send-email

[AWS] Amazon SES と Postfix を連携しメールを送付する
https://mseeeen.msen.jp/send-emails-by-linking-amazon-ses-and-postfix/

Amazon SESのSMTPエンドポイントを試してみた | DevelopersIO
https://dev.classmethod.jp/articles/sendmail-from-ses-smtpendpoint/

Amazon SESによるメール送信環境の構築と実践 | DevelopersIO
https://dev.classmethod.jp/articles/amazon-ses-build-and-practice/

[AWS] EC2/LAMP環境を構築する(4) – MySQL

(前回からの続き)

MySQLのインストール

Webアプリの要件がMySQL 5.7なので。

MariaDBをアンインストール

mysql8.0リポジトリの追加 (mysql5.7も含まれている)

mysql8.0リポジトリの無効化

mysql5.7リポジトリの有効化

mysql5.7がインストールできるか確認

インストール

起動

デフォルトパスワードを調べる

パスワード変更

アクセス確認

参考サイト

AWSのEC2で行うAmazon Linux2(MySQL5.7)環境構築 – Qiita
https://qiita.com/2no553/items/952dbb8df9a228195189

MySQLの初期パスワードのありか – Qiita
https://qiita.com/RyosukeSomeya/items/c695487588f5ac28d9f4

[AWS] EC2/LAMP環境を構築する(3) – Apache/PHP

(前回からの続き)

Apacheのインストール

PHPのインストール

Webアプリの要件がPHP 7.4なので。不足モジュールはWebアプリをセットアップする際に追加する。

Apacheの起動

IPアドレスでアクセスしてテストページが表示されることを確認
http://xxx.xxx.xxx.xxx/

ステータス確認

(次回へ続く)

参考サイト

Amazon Linux 2 EC2 インスタンスに Extras Library からソフトウェアをインストールする
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/

Install PHP 7.4|7.3|7.2 on Amazon Linux 2 – TechViewLeo
https://techviewleo.com/install-php-7-on-amazon-linux/

[AWS] EC2/LAMP環境を構築する(2) – 初期設定

(前回からの続き)

システム更新

タイムゾーン設定

変更前確認

設定変更

変更後確認

ホスト名設定

変更前確認

設定変更

変更後確認

chrony(時刻同期)のインストール

もしNTPサービスがインストールされていたらアンインストール

chronyをインストール

設定確認

起動

自動起動をオンにする

動作確認

(次回へ続く)

参考サイト

Set the time for your Linux instance
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

[AWS] EC2/LAMP環境を構築する(1) – インスタンス作成

DigitalOceanで運用していたサイトをAWSに移すことになったので、AWSのEC2でLAMP環境を作る手順を覚え書き。

EC2インスタンスの作成

EC2インスタンスの要件は以下とする。

  • リージョン: N. California
  • OS: Amazon Linux 2
  • インスタンスタイプ: t2.micro (本稼働前にスケールアップする)
  • ストレージ: Rootボリューム(8GB)のみ
  • セキュリティグループ: HTTPとHTTPSは全許可、SSHは自分のIPのみ許可
  • Elastic IPで固定IP

インスタンスが作成できたら、インスタンス作成時に指定した鍵情報を使ってsshアクセスできることを確認する。

ユーザの作成

Root権限の付与

公開鍵認証の追加

SSHデーモンの設定 – rootでのログインを禁止する。

ログイン確認 – 現在のセッションは維持したまま、新しいターミナルを開いて試す。

スーパーユーザになれることを確認

(次回へ続く)

[C#] dot-gimei – 日本人の名前や、日本の住所をランダムに返すライブラリ

PHPだとFakerを使って日本語のテストデータを自動作成することがある。C#でも同じことができないかと調べたら、似たようなものを作ってくれている人がいた。.NETのクラスライブラリになっているので、NuGetを使ってVisual C#のプロジェクトに簡単に追加できる。ありがたい。

GitHub – matarillo/dot-gimei: .NET port of gimei
https://github.com/matarillo/dot-gimei

適当な日本人の名前や住所をランダムに作れる gimei を C# に port した。 – matarilloの雑記
https://matarillo.hateblo.jp/entry/2015/05/28/194317

[WordPress] バックアップ用プラグイン

WordPressサイトを丸ごとバックアップできるプラグインを探す。

ネットの記事を読んで廻ったら以下の2つの評価が高いように感じた。どちらも多機能で良さげ。

The World’s Most Trusted WordPress Backup Plugin – UpdraftPlus
https://updraftplus.com/

BackWPup Pro – The perfect WordPress Backup Plugin!
https://backwpup.com/

2つのプラグインの大きな違いは、UpdraftPlusはバックアップ先にローカルストレージを指定できないこと。ストレージのクラッシュに備えたバックアップならば保存先をクラウドに指定するのは定石だろうが、自分が運営しているサイトの中には更新頻度が高いので数時間おきにストレージのスナップショットを保存しているものがあったりする。そういったサイトの場合は、WordPressをバージョンアップするときのフェイルセーフとしてローカルに一時バックアップを取っておきたいというニーズがある。

というわけで、ローカルストレージにバックアップするならBackWPup Pro、クラウドストレージにバックアップするならUpdraftPlus、自分の中ではそういうルールで使い分けることにする。