サーバーに電子メールを送信させると、bash スクリプト、アプリケーション、および cron ジョブからの通知を簡単に受け取ることができます。コマンドライン電子メールは個人用電子メールと同様に機能し、構成と使用が簡単です。
コマンドラインメールはどのように機能しますか?
電子メールがインターネット上を移動するとき、通常は Simple Mail Transfer Protocol (SMTP) 経由で送信されます。メールの送信を処理するサーバーは SMTP サーバーと呼ばれ、多くのフリーメールプロバイダー (Gmail、Yahoo など) が無料で SMTP サーバーを提供しています。送信を行うコマンド ライン アプリを構成するだけで済むため、これはこのユースケースに最適です。
このアプリはメール転送エージェント (MTA) と呼ばれ、SMTP サーバーとの通信を処理します。 MTA を SMTP サーバーで認証する必要があります。これは通常、パスワードまたはキーを与えるだけで簡単です。そうすれば、MTA がユーザーとして機能し、ユーザーのアカウントから電子メールを送信できるようになります。
エンド ユーザーに電子メールを送信することを計画している場合は、SMTP プロバイダーで詳細な情報を構成する必要があります。これは通常、DKIM および SPF 認証を使用してドメインを検証することを意味します。これにより、ドメインの所有者であり、アドレスを偽装していないことが証明されます。これは Gmail で行うことができますが、大量のメールを送信する場合は、 Amazon SES などのビジネス ソリューションを使用する必要があります。
Postfix のインストールと設定方法
コマンドライン電子メールの最も簡単な解決策は、Gmail などの無料の SMTP サーバーを使用して Postfix を MTA として使用することです。 Gmail は 1 日あたり 100 件のメールに制限されており、単純なメール通知にはこれで十分であると考えられます。それ以上のものが必要な場合は、 Amazon SES または SendGrid を 使用できます。この例では、どちらも Gmail の SMTP サーバーのドロップイン代替品となります。
Postfix は 独自の SMTP サーバー を実行することもできますが、構成が難しく、ドメイン検証を構成しない限り、外部受信者との互換性が低くなります。
Postfixをインストールし、
libsasl2-modules
、SMTP 認証を管理するためのパッケージ、ディストリビューションのパッケージ マネージャーから入手します。 Ubuntu などの Debian ベースのシステムの場合、次のようになります。
sudo apt-get install postfix libsasl2-modules
Postfix をインストールすると、設定を求めるプロンプトが表示されます。最初の画面で「インターネット サイト」を選択します。これにより、Postfix が SMTP を使用するように設定されます。
次のプロンプトでは、ドメイン名を尋ねられます。 Postfix を使用するのにドメイン名は必要ありませんが、そのドメイン名からメールを送信するにはドメイン名が必要になります。この例では、ドメイン名を指定せずに、Postfix 用に設定した Gmail アカウントからメールが送信されます。
次に、Postfix を認証する必要があります。自分のアカウントの Gmail パスワードを使用できます。Postfix 専用の新しいアカウントを作成する場合は問題ありませんが、個人アカウントを使用している場合は、 アプリ パスワード を作成する必要があります。こうすることで、パスワードはいつでも取り消すことができます。アプリのパスワードを使用するには、2 要素認証をオンにする必要があることに注意してください。
Postfix は認証の詳細を
/etc/postfix/sasl/sasl_passwd
に保存します。このファイルはデフォルトでは存在しない可能性があるため、
touch
を使用して作成する必要がある場合があります。それを開いて、情報を次の場所に貼り付けます。
[smtp.gmail.com]:587 ユーザー名@gmail.com:パスワード
これにより、Postfix が Google の SMTP サーバーを使用し、ユーザーの詳細情報で認証するように設定されます。
次に、
sasl_passwd
で
postmap
を実行します。
sudo ポストマップ /etc/postfix/sasl_passwd
これにより、Postfix で使用される
sasl_passwd.db
ファイルが生成されます。これらのファイルはどちらもアプリのパスワードを平文で保存するため、
chown
および
chmod
を実行して、パスワードを root に制限する必要があります。
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
これで Postfix を使用する準備が整ったはずですが、SMTP リレーと SASL 資格情報を使用するように Postfix のメイン設定ファイルを設定する必要があります。お気に入りのテキスト エディタで
/etc/postfix/main.cf
を開き、「relayhost」オプションを見つけます。 Gmail の SMTP サーバーを使用するようにこれを変更します。
リレーホスト = [smtp.gmail.com]:587
次に、ファイルの最後に次の行を追加して、SASL を構成し、パスワード ファイルを使用します。
# SASL認証を有効にする
smtp_sasl_auth_enable = はい
# 匿名認証を許可するメソッドを禁止します。
smtp_sasl_security_options = 匿名なし
# sasl_passwd の場所
smtp_sasl_password_maps = ハッシュ:/etc/postfix/sasl_passwd
# STARTTLS 暗号化を有効にする
smtp_use_tls = はい
# CA 証明書の場所
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
このファイルを保存し、
systemctl
で Postfix を再起動します。
sudo systemctl restart postfix
これで Postfix が完全に設定され、システムのデフォルトのメール ハンドラとして設定されるはずです。 Postfix 独自の
sendmail
コマンドを使用してテストできます。
sendmail 受信者@gmail.com
差出人: youremail@gmail.com
件名: サーバーからこんにちは!
これは、Postfix によってサーバーから送信されたテストメールです。
。
受信箱 (または送信箱) を確認すると、新しいメールが表示されるはずです。
sudo tail -f /var/log/mail.log
(または
mail.err
) を実行してメール ログを確認できます。
Postfix はそれ自体をサーバーのデフォルトのメール ハンドラーとして設定します。電子メール送信を行う必要があるアプリやプログラムは、PHP (Postfix の
sendmail
を使用する) など、デフォルトで Postfix を使用する必要があります。一部の場合は追加の構成が必要な場合がありますが、通常はアプリに Postfix を使用するように指示するだけです。
sendmail
使用したくない場合 (少し使いにくいため)、別のメール クライアントをインストールできます。適切なクライアントは
mutt
です。これはファイルを添付ファイルとして送信することをサポートしており、デフォルトで Postfix を使用します。単純な送信の構文は次のとおりです。
echo "電子メールの内容" | mutt -s "メールの件名"recipient@gmail.com
ファイルを添付する場合は、
-a
フラグ値と受信者を二重ダッシュ「
--
」で区切る必要があります。
echo "電子メールの内容" | mutt -s "電子メールの件名" -a /path/to/file --recipient@gmail.com
これは、SMTP サーバーによって課せられるファイル サイズ制限に達していないと仮定すると、ファイルが添付された状態で受信箱に表示されます。
どのメール クライアントを選択する場合でも、シェル スクリプト、cron ジョブ、および Unix コマンドを実行するように設定できるその他の場所から使用できる必要があります。





