Edited at

コマンドライン上からmailを送信する場合の方法とその解説

More than 3 years have passed since last update.

色々な単語の説明もしていく。

macのターミナルからメールを送るにはデフォルトでインストールされているpostfixというソフトを使う。

postfixとは

postfixはフリーのMTAである。 MTAとはメール転送エージェントの略でメール送信サーバーのことである。

postfixを使ってgmail経由でメールを送信する。

なぜgmail経由でメールを送るのかというと、OP25Bの問題があるから。

OP25B(Outbound Port 25 Blocking)とは

通常電子メール送信には25番ポートを使用する(受信は110番)。メールはSMTPプロトコルを使用して送信するが、SMTPプロトコルは簡単にメールを送ることができるように設計されている。これを悪用し、迷惑メールを送る業者などが増えたため、それを防止するための措置として、OP25Bが導入された。

これは自分が利用しているプロバイダ外のメールサーバー宛に送る場合で、25番ポートを使って送信している利用者の通信を遮断するもの。

例えば、迷惑メール送信者が25番ポートを使用し、契約しているISP(プロバイダ)ではなく(これは身元の特定等の危険があるため)別に用意してあるメールサーバーからメールを転送するといった場合に、これを遮断する。

迷惑メールを送っていた業者もプロバイダ経由でメールを送らなくてはならなくなり、迷惑メールを送りづらくなった。

ただ、25番ポートの通信を遮断してしまうと、正規のユーザーが外出先のネットワークからメールを送りたい場合、外出先ネットワークが自分の利用しているISPではない場合に遮断されてしまう。

それを解決するために登場するのが、サブミッションポートである。

サブミッションポート(587番)

このポートの特徴はSMTP-AUTHという認証機能を搭載しているところである。これはメールを送信する際にユーザーIDとパスワードを要求する機能で、STMPサーバーとユーザーとの間で認証が通った場合のみメールを送信するというもの。

今回メール送信の設定をするにあたって考える必要があるのがこの問題である。

例えば、試験的にメールの送信を行いたいとか、業務上の理由でプロバイダのメールサーバーではなく、自前でサーバーを用意したいといった場合、一旦サブミッションポートを使ってメールを外部のSTMPサーバーにリレーしてもらう(今回はgmailを使う)に送る。gmailから転送するメールはOP25Bの影響を受けないため、メールの送信が可能になる。

では設定の説明。

MACにデフォルトで入っているpostfixは

/etc/postfix

にある。

このディレクトリ内に

/etc/postfix/sasl_passwd

というファイルを作成し、そこにgmailのパスワードを入力する。

smtp.gmail.com:587 自分のアドレス@gmail.com:パスワード

(smtp.gmail.comはgmailのsmtpサーバー名である。)

ファイル作成後、

postmap /etc/postfix/sasl_passwd

と入力して、このファイルの設定を有効にする。

次に、リレー先(中継先)の設定をpostfixのメイン設定ファイルに記述する。

ファイルの場所は

/etc/postfix/main.cf

このファイルの最後に

例;

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/ssl/certs/ca-certificates.crt

以上の設定を追加する。上記の設定はサンプルなので、自分の使いたい設定に変更する。

設定完了後、

postfix start(postfix reload)

のコマンドでpostfixを起動させる。

メールを送りたい時は

mail -s title 自分のアドレス@gamil.com

で送信できる。

間違っていたらご指摘をお願い致します。