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でメール送信元を指定します。メール送信元がない場合は、メールがはじかれるという経験が多いので、指定しています。

その後ろに、メールの送信先を指定します。試験するときは、送信先、送信元どちらも同じで大丈夫です。

PerlでポータブルなLinuxファイル管理入門

業務に役立つPerl

Perlテキスト処理のエッセンス

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。