postfixのインストール - メール送信 sendmailコマンド
メールを送信するためのsendmailコマンドを使うためにpostfixをaptコマンドでインストールしましょう。
sudo apt install -y postfix
Webシステム開発では、postfixは受信メールサーバーになる必要はないです。postfixのインストールは、送信メールを配送するサーバーとして機能することと、sendmailコマンドが使えるようにすることが、主な目的です。
メール送信は、お問い合わせフォームにおけるメール送信や、アカウント登録機能のメール認証で利用します。
インストールコマンドを実行すると、GUIの画面が立ち上がってびっくりします。
(CUIで行う方法知っておられましたら「kimoto.yuki@gmail.com」まで、お願いします。)
キーボードの右を押すと、Okが光ります。Enterを押します。
上下キーで「No configuration」を選択します。右キーを押すとOkに勧めるので、Enterを押します。
インストールが始まります。
postfixがインストールされたことの確認
postfixがインストールされたことを確認するためにsystemctlコマンドのstatusを使いましょう。
sudo systemctl status postfix
inactiveで起動はしていないですが、インストールはできています。
● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled) Active: inactive (dead) Condition: start condition failed at Sat 2020-05-16 15:36:13 JST; 2 days ago
postfixが起動していないのは、設定ファイルがないためです。
メールを送信するには?
メールを送信するには、どうすればよいのでしょうか?
ここからは、普通の方法で、メールを送信するのは、どれほど難しいかということを書きます。
postfixの機能について
まず、postfixの設定に関して、Web上には、いろいろな種類の設定方法が掲載されています。
postfixには、主に三つの機能があって、メールを送信する機能、メールを転送する機能、メールを受信する機能です。
Webシステム開発をする上で、少なくとも、欲しい機能は、メール送信機能だけです。
postfixについて、自分で調べる場合は、メール送信機能に限定した手順を探す必要があります。
postfixのバージョンについて
postfixはバージョン2とバージョン3がありますが、同じ設定をしても動かなかったり意味が違う項目があります。
DNS解決
次にpostfixの設定項目で「myhostname」という項目がありますが、これは「ホスト名.ドメイン名」という名前で指定します。
この場合に、postfix 3では、ドメイン名はDNSサーバーで解決できる必要があります。postfix 2では、これは必須ではなかったような気もします。
myhostname = app1.perlclub.net myorigin = $mydomain relayhost = $mydomain inet_interfaces = loopback-only mydestination =
25番ポートの外部送信のブロック
VPSやクラウドサーバーなどで、ポート25番の外部送信がブロックされていると、通常の設定では、sendmailコマンドでメールは送れません。
これは、迷惑メール対策のようです。
つまり、外向き25番ポートがブロックされている環境が2020年では、普通のことだと想定しなければなりません。
認証付きSMTPサーバー
25番ポートがブロックされている場合に、どのようにメールを送信するのでしょうか?
一番簡単な方法は、認証付きSMTPサーバーに対して、postfixの送信メールをリレーすることです。
このようなメールサービスが公開されており、メール送信、月10000件程度までは、無料で利用できます。
ですので、まず認証付きSMTPサーバーを提供しているサービスを利用するというのが、最も簡単で、無料で始められる方法です。
sendmailコマンドが使えることの確認
sendmailが使えることを確認しましょう。
sendmail
入力待ちになったら、sendmailがインストールされています。Ctrl + C でsendmailを終了しましょう。
ではメールを送信してみましょう。「メール送信元」「メール送信先」のところを自分のメールにしてください。
echo Hello | sendmail -f メール送信元 メール送信先
sendmailでは、標準入力が、本文になります。
-fはfromでメール送信元を指定します。メール送信元がない場合は、メールがはじかれるという経験が多いので、指定しています。
その後ろに、メールの送信先を指定します。試験するときは、送信先、送信元どちらも同じで大丈夫です。