このページではLinux構築した自宅サーバーで、メールサーバーSMTP AUTHで運用する方法について解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
メールサーバーの構築

メールサーバーについて

電子メールシステムについて

メールアカウントの作成

POP/IMAPサーバーの設定

Sendmailの設定

Postfixの設定

ユーザー認証によるメール送信

SMTP AUTHの設定

POP/IMAP before SMTP

dracによるPBS構築
(WBEL3,CentOS3(i386))

Pop-before-smtpの設定
(WBEL3,4_CentOS3,4+UW IMAP)

Pop-before-smtpの設定
(WBEL4_CentOS4,5+Dovecot)

SquirrelMailの設定

サブミッションポートの設定

メールの転送設定のコツ

メールサーバーのコントロール

メールサーバーの動作チェック

ポートフォワーディングの設定


SMTP AUTH(SMTP認証)とは

電子メールを送信するときに メールサーバー に対してユーザー名とパスワードを送信し、認証が行われればメールサーバーがそのメールの転送を受け付ける、という最も解りやすい認証方法です。

しかしSMTP AUTHは、メール送信の認証方法としては2000年ごろから標準化が進められてきていていますが、まだSMTP AUTHに非対応の MUA のユーザーが多く存在することから完全な標準化には至っていないというのが現状です。

ところで、

「どうしてそんなあたりまえの認証方法が最初から使われなかったの?」

という素朴な疑問が湧いてくることと思います。

こちら 電子メールシステムについて 、あるいは こちら ユーザー認証によるメール送信 で説明しているとおり、そもそも電子メールとは

サーバー ログイン した後にやりとりするもの」

でしたから、メールの送信 プロトコル である SMTP に「ユーザーを認証するという概念が存在しなかった」ため、認証システムの組み込みが後付けになってしまったから、というのがその疑問に対する答えです。

このことはIPv4における グローバルIPアドレス の枯渇問題 グローバルIPアドレスの枯渇問題について などと同様に、インターネット利用の将来性を十分に見通せなかったために起こっている問題の一つといえるでしょう。

とはいえ、余程のこだわりがある人を除けば、世の中の大部分のユーザーが利用するMUAは既にSMTP AUTHに対応していると考えても差し支えのない状況になっていますから、むしろ積極的にSMTP AUTHを利用し、完全標準化の一翼を担うことも社会貢献の一つではないでしょうか。

WBEL CentOS でのSMTP AUTHの構築は、 SASL で認証を担うアプリケーション "cyrus-sasl" MTA である Postfix または Sendmail との連携で行います。

cyrus-saslは非常に多機能で、一般的な テキスト 認証の他に暗号化認証も扱うことができますし、 構築中のLinuxサーバー ユーザーアカウント 名とパスワードをそのまま認証に使うことも、別の データベース を使って認証を行うこともできるようになっています。

ただ、自宅サーバーでの電子メールの利用では必要以上に高度な セキュリティ やパスワード管理は不要と思われますので、ここでは「サーバー上のユーザーアカウントに対してテキストで認証する。」という一番簡単な方法でのSMTP AUTHの設定を説明します。

ところで、既に一通りメールサーバーの構築が終わっている環境では、「部分的なメール送信許可の設定」あるいは「SMTP AUTH以外の認証」が少なからず有効になっていると思われます。

しかしこれらの仕組みが機能していると、外部からメールが送信できたのが、これから構築するSMTP AUTHの機能によるものなのかどうかがハッキリしなくなります。

そこで、

■ MTAとしてPostfixをご利用の場合

主設定ファイル "/etc/postfix/main.cf" /etc/postfix/main.cfについて "mynetworks_style" ディレクティブ mynetworks_styleディレクティブについて または "mynetworks" ディレクティブ mynetworksディレクティブについて でMUAを利用するパソコンのIPアドレスがメールの転送許可の範囲に指定されているときは、該当するIPアドレスからのメールの転送許可を一時的に止める。

■ MTAとしてSendmailをご利用の場合

転送許可設定ファイル "/etc/mail/local-host-names" /etc/mail/local-host-namesについて でMUAを利用するパソコンのIPアドレスがメールの転送許可の範囲に指定されているときは、該当するIPアドレスからのメールの転送許可を一時的に止める。

■ POP/IMAP-before-SMTPをご利用の場合

ご利用のサーバー環境に合わせて、WBEL3及びCentOS3の場合はこちら dracによるPBS構築(WBEL3,CentOS3(i386)) 、WBEL4及びCentOS4の場合はこちら Pop-before-smtpの設定(WBEL3,4_CentOS3,4+UW IMAP) またはこちら Pop-before-smtpの設定(WBEL4_CentOS4,5+Dovecot) 、CentOS5の場合はこちら Pop-before-smtpの設定(WBEL4_CentOS4,5+Dovecot) を参考に認証動作を停止する。

なお、これらの設定を変更した場合は、MTAや関係アプリケーションの再起動や設定の再読み込みなどを行い、変更した設定がきちんと反映されるように注意してください。忘れがちなので老婆心ながら。

などの一時的な事前の設定変更を行い、「SMTP AUTHがなければメールが送信できない」状況を作ったたうえでSMTP AUTHの構築作業を行うことをおススメします。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

MUA(ローカルメーラー)の設定

手順としては逆になりますが、 メールサーバー 側での SMTP AUTH の設定は、途中で MUA からの送信確認を行いながら作業を進めるとやりやすいので先にMUA側の設定について説明します。

SMTA AUTHは電子メールシステムにおいては後から追加された関係で、メール アカウント の設定ウィザードでダイレクトに設定可能なMUAは少なく、ウィザードで基本的な設定を行った後に、作成されたアカウントの送信設定を変更するものが大部分です。

またMUAの種類ごとで「SMTP AUTH」の設定に使われる用語は異なりますから、詳しくはご利用のMUAのマニュアルなどで確認する必要があります。

代表的なMUAのSMTP AUTHの設定は以下のようになります。

■ Outlook、OutlookExpress、WindowsMail、WindowsLiveMailなど

「アカウント設定」→「サーバー」→「このサーバーは認証が必要」または「送信サーバーは認証が必要」にチェックを入れる。

SMTP AUTHを有効にする(WindowsLiveMail)
のSMTP AUTHを有効にする(WindowsLiveMail)
SMTP AUTHを有効にする(WindowsLiveMail)
SMTP AUTHを有効にする(WindowsLiveMail)

■ ThunderBird

→「送信(SMTP)サーバの設定」から「セキュリティと認証」の「ユーザ名とパスワードを使用する」にチェックを入れる。

■ Eudora

→「ツール」→「オプション」→「メールの送信」→「認証を許可」にチェックを入れる

■ Becky!

→「ツール」→「メールボックスの設定」→「詳細」タブ→「SMTP認証」にチェックを入れる

MUAの設定が終わったら、 構築中のLinuxサーバー を送信メールサーバーアドレスに指定したうえで、ISP等のメールアドレスに宛てにテスト送信を行い、ご自身のメールサーバーが外部に中継送信できないことを確認してから以降のSMTP AUTHの構築作業を行ってください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

cyrus-saslの確認と自動起動設定

この コンテンツ の説明に従って WBEL CentOS インストール を行っている場合、 SMTP AUTH の構築に必要な SASL アプリケーション として "cyrus-sasl" がインストールされているはずです。

まず rpm コマンド インストール を確認します。

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンドで アカウント "root" に変更し、 rpm コマンドで "cyrus-sasl" を含む RPM を一覧します。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# rpm -qa | grep cyrus-saslEnter rpmコマンドについて パイプ処理について grepコマンドについて
cyrus-sasl-plain-2.1.22-5.el5_4.3
cyrus-sasl-2.1.22-5.el5_4.3
cyrus-sasl-md5-2.1.22-5.el5_4.3
cyrus-sasl-lib-2.1.22-5.el5_4.3
cyrus-sasl-devel-2.1.22-5.el5_4.3
[root@web1 ~]#

この例はCentOS5の場合です。

ディストリビューション によってバージョンとパッケージ構成が若干異なりますが、少なくとも、

cyrus-sasl-xxxxxxx
cyrus-sasl-plain-xxxxxxxx
cyrus-sasl-devel-xxxxxxxx

の3種類がインストールされていればOKです。それ以外のパッケージは外部 データベース の参照や暗号化などに必要なものです。

もしも必要なパッケージのインストールが確認できないときは、 yum を利用してインストールを行ってください。

次にcyrus-saslの基本設定ファイルの内容を確認します。

WBEL及びCentOSのアーキテクチャについては、こちら、 WBEL3のインストールの準備について WBEL4のインストールの準備について CentOS3のインストールの準備について CentOS4のインストールの準備について CentOS5のインストールの準備について

cyrus-saslの基本設定ファイルは、インストールしたWBEL及びCentOSがx86用(32 ビット アーキテクチャ )の場合は "/usr/lib/sasl2/smtpd.conf" 、AMD64またはEMT64用(64ビットアーキテクチャ)の場合は "/usr/lib64/sasl2/smtpd.conf" と場所が異なりますので注意してください。

内容を cat コマンドで表示してみると、設定ファイルの内容は以下の一行だけになっているはずです。

この設定の内容を修正することで、外部のデータベースを参照したり、暗号化を有効にしたりすることができます。
[root@web1 ~]# cat /usr/lib/sasl2/smtpd.confEnter catコマンドについて
pwcheck_method: saslauthd
[root@web1 ~]#

直接の意味としては 「パスワードチェック方法としてに"saslauthd"を用いる」 となります。

WBELやCentOSのインストールで "cyrus-sasl"が 導入されると、 デフォルト "/etc/init.d/saslauthd" という起動 スクリプト が作成されますが、この起動スクリプトは "/etc/shadow" /etc/shadowについて を参照して認証動作を行うように記述されていますから、

「サーバーのアカウント名とパスワードで認証する」

という動作となります。もちろん設定の修正を行う必要はありません。

設定の内容を確認したら、 "/etc/init.d/saslauthd" を起動します。

[root@web1 ~]# /etc/init.d/saslauthd startEnter
saslauthd を起動中:                     [ OK ]
[root@web1 ~]#

saslauthd の起動、停止、再起動などの操作については、 saslauthdのコントロールについて を参照してください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

SendmailのSMTP AUTHの設定

Sendmail SMTP AUTH を利用するには、主設定ファイルである "/etc/mail/sendmail.mc" を編集して、 "/etc/mail/sendmail.cf" を作り直してSendmailの再起動を行います。

"/etc/mail/sendmail.mc" の編集については /etc/mail/sendmail.mcの編集について を、 "/etc/mail/sendmail.cf" の作成方法については /etc/mail/sendmail.cfの作成について をそれぞれ参考にしてください。

SMTP AUTHを有効にする設定(Sendmail)

WBEL3 及び CentOS3 では 47行目 、WBEL4及びCentOS4では 48行目 、CentOS5では 52行目 あたりに記述があります。

デフォルト "/etc/mail/sendmail.mc" では、

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl

と、SMTP AUTHを利用するための設定が先頭の "dnl" で無効化されていますから、これを削除して、

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

と、有効化します。

一行目は認証許可の仕組みに関する指定、二行目はSendmailが利用する認証方法の指定となります。

記述には暗号化認証などの不必要なものも含まれますが、cyrus-saslで有効にしていない認証方法は実質的に動作しませんのでそのままで構いません。

編集が終わったら "/etc/mail/sendmail.mc" を保存して、 "/etc/mail/sendmail.cf" の作成を行い、Sendmailの再起動を行うと設定が有効になります。 Sendmailの再起動について

前述の "saslauthd" が起動していれば、ここでSMTP AUTHは利用可能になっているはずです。

前述でSMTP AUTHによる送信設定を行った クライアント MUA から、外部のメールアドレスに対して送信を行ってみて、きちんと送信できれば設定完了です。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

PostfixのSMTP AUTHの設定

Postfix SMTP AUTH の利用を設定するには、主設定ファイルである "/etc/postfix/main.cf" を編集します。

まず、 サブネット 内の適当な クライアント機 から SSHクライアント 構築中のLinuxサーバー ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5)

それから su コマンドで アカウント "root" に変更し、 cp コマンドでバックアップを作成した後、 nano エディタで "/etc/postfix/main.cf" を開きます nanoエディタでファイルを開く

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cp /etc/postfix/main.cf /etc/postfix/main.cf.orgEnter
[root@web1 ~]# nano /etc/postfix/main.cfEnter


nanoで/etc/postfix/main.cfを開く
nanoで"/etc/postfix/main.cf"を開く

後でチェックしやすいように、設定ファイルの末尾に記述しておくと良いでしょう。

"/etc/postfix/main.cf"には、SMTP AUTHに関して予め記述されている設定例はありませんので、以下のように追加記述します。

smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions =
 permit_mynetworks,
 permit_sasl_authenticated,
 reject_unauth_destination

"smtpd_sasl_auth_enable = yes" は、「 SASL による認証を利用する」という宣言で、これを記述しないとcyrus-saslとの連携が行われませんので必ず記述します。

"smtpd_recipient_
restrictions"
ディレクティブの詳細についてはこちら smtpd_recipient_restrictionsディレクティブについて を参考にしてください。

"smtpd_recipient_restrictions" ディレクティブ は、Postfixのメール中継制御を担うものですが、既に記述があるときは、 "permit_sasl_authenticated" は「SASLで認証されたメールの送信を受け付ける」という設定を、 "permit_mynetworks" "reject_unauth_destination" の間に追記します。

"smtpd_recipient_restrictions" の記述がない場合は、上の全文を新規に記述してください。

またこのディレクティブは本来一行に記述すべきものを、 ",(カンマ)" で区切って改行したものです。

従って、"/etc/postfix/main.cf"の記述ルールに従って、2行目以降の行の先頭には必ず スペース を入れなければならない点に注意してください。

以下にコピー&ペースト用の テキスト ファイルの掲載しますので、必要に応じて利用してください。

編集が終わったら、ファイルを保存してnanoエディタを終了してください nanoエディタを終了する

Postfixの再起動または設定の再読み込みを行うと設定が有効になります。

Postfixの再起動、設定ファイルの再読み込みについては、 Postfixのコントロールについて を参考にしてください。

前述の "saslauthd" が起動していれば、ここでSMTP AUTHは利用可能になっているはずです。

前述でSMTP AUTHによる送信設定を行った クライアント MUA から、外部のメールアドレスに対して送信を行ってみて、きちんと送信できれば設定完了です。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このサイトは リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。今のところ更新予定はありませんのでご了承ください。
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。