※注意
Vine3の場合は、SMTP-AUTHの導入のページを参考にしてください。

SMTP-AUTHとは?

メールサーバーを構築する場合、送信メールサーバー(SMTPサーバー)と受信メールサーバー(POP/IMAPサーバー)の構築が必要です。

Postfix を外部から利用する為には、POP before SMTP か、SMTP-AUTH のどちらかの送信認証機能が、必要です。

SMTP-AUTH とはメール送信時にSMTPサーバーによってユーザーの認証を行うシステムです。
デメリットとしてはメールソフトがSMTP-AUTHに対応していない場合は利用できません。

ここでは、送信メールサーバーには Postfix 受信メールサーバーには courier-imap(Maildir方式) を採用する。

Maildir とは?

MTA(主にsendmail,postfix,qmailなど)のメールの格納方式には Mailbox方式とMaildir方式があります。

Mailbox方式
/var/spool/mail/ユー ザー名
というファイルにメールを蓄える方式で、1つの ファイルに複数のメールを蓄えます。

Maildir方式
/home/ユーザー名/Maildir/new
とい言うディレクトリの中に、1つのメールにつき1つのファイルを使用する方式です。

Maildir にする理由

Mailbox形式だと、1人のユーザー宛のメールは全て1つのファイルに格納される為、
ファイルが壊れると全てのメールが読めなくなる可能性があります。
しかしMaildir形式では、ファイルが壊れても1通のメールが読めなくなるだけで被害を最小限に抑える事が可能です。

また、Mailbox形式の場合、あるユーザーのメールでディレクトリが一杯になると、他のユーザーのメールが配送できなくなる可能性があります。
しかしMaildirならば、ユーザーのホームディレクトリに容量制限(quota)で制限をかけてしまえば事前に被害を防ぐ事が可能です。

上記の理由でYosi はMaildir をお勧めし、当サイトでは Maildir にて構築して行きます。

Maildir を作製する

Maildir方式を使用するにあたり /home/ユーザー名 の中にMaildir と言うディレクトリを作成する必要があります。

# mkdir -p /home/ユーザー名/Maildir/{new,cur,tmp}

/home/ユーザー名/Maildir のアクセス権を変更

# chown -R 所有者:グループ名 /home/ユーザー名/Maildir

例)

# chown -R yosi:yosi /home/yosi/Maildir ← 所有者、グループ名が yosi の場合

当サイト ユーザーの追加と削除 に記載の方法でユーザーを作成した場合、所有者、グループ名は同じになります。

※ Maildir を自動作製する
/etc/skel/の中身のディレクトリがユーザーを追加した時に自動で作成されます
なので skel の中に Maildir フォルダを作成しておくといちいち、後からディレクトリを作ったり、アクセス権を
変更する手間が省かれます。


# mkdir -p /etc/skel/Maildir/{new,cur,tmp}

# chmod -R 700 /etc/skel/Maildir/ ← パーミッション変更

Cyrus SASLのインストールと設定

SMTP-AUTHを導入するには Cyrus SASLが必要ですが、Yosiの場合は最初からcyrus-saslだけインストールされていました。


# apt-get install cyrus-sasl cyrus-sasl-devel cyrus-sasl-md5 cyrus-sasl-plain db4-devel ← インストール
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
* db4-devel は既に最新バージョンがインストールされています。
以下のパッケージが新たにインストールされます:
  cyrus-sasl-devel cyrus-sasl-md5 cyrus-sasl-plain
アップグレード: 0 個, 新規インストール: 3 個, 削除: 0 個, 保留: 1 個
643kB のアーカイブを取得する必要があります。
展開後に 1809kB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org 3.2/i386/devel cyrus-sasl-devel 2.1.18-0vl3 [560kB]
取得:2 http://updates.vinelinux.org 3.2/i386/updates cyrus-sasl-md5 2.1.18-0vl3 [58.7kB]
取得:3 http://updates.vinelinux.org 3.2/i386/updates cyrus-sasl-plain 2.1.18-0vl3 [24.5kB]
643kB を 1s 秒で取得しました (451kB/s)
変更を適用しています...
準備中...                   ########################################### [100%]
   1:cyrus-sasl-devel       ########################################### [ 33%]
   2:cyrus-sasl-md5         ########################################### [ 66%]
   3:cyrus-sasl-plain       ########################################### [100%]
完了

# /etc/rc.d/init.d/saslauthd start ← saslの起動
saslauthdを起動中:                      [  OK  ]
# /sbin/chkconfig saslauthd on ← sasl自動起動設定
# /sbin/chkconfig --list saslauthd ← 自動起動設定の確認
saslauthd       0:off   1:off   2:off   3:on    4:on    5:on    6:off ← ランベル3〜5 が on か確認

認証ユーザーの登録と削除

※注意
システムのユーザーID、PasswdとSMTP-AUTH認証用ユーザーID、Passwdを別にする場合のみ設定


※ ユーザ名IDは実在するユーザ名を指定

# /usr/sbin/saslpasswd2 -u xxxxx.com -c ユーザーID ← ユーザー登録
Password: ← パスワード
Again (for verification): ← パスワード確認

1度目の登録でエラーがでる場合はもう一度登録を行って下さい。
2度目で多分いけると思います。


設定したユーザ名・パスワードを削除する場合

# /usr/sbin/saslpasswd2 -u xxxxx.com -d ユーザーID ← ユーザー削除


登録している認証ユーザーの確認

# /usr/sbin/sasldblistusers2 ← 認証ユーザー確認
yosi@xxxxx.com: userPassword ← このように表示されればOK

saslデータベースの設定


# vi /usr/lib/sasl2/smtpd.conf ← 新規作成
 i キー(入力モード)
下記を追記します

システムのユーザーID、Passwdを使用する場合は下記を追記
pwcheck_method: saslauthd

システムのユーザーID、PasswdとSMTP-AUTH認証用ユーザーID、Passwdを別にする場合は下記を追記
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login


記載したら Esc キー(コマンドモード) :wq で保存

Postfixがsasldbを利用できるようにグループ、パーミッションを変更します。
※ ファイルやディレクトリが無いというエラーが出る場合は認証ユーザーの登録後に行ってください。


# chown -R root:postfix /etc/sasldb2
# chmod 640 /etc/sasldb2
# /etc/rc.d/init.d/saslauthd restart ← saslの再起動
saslauthdを停止中:                             [  OK  ]
saslauthdを起動中:                             [  OK  ]

Postfixの設定


# vi /etc/postfix/main.cf ← 設定ファイル編集

myhostname = server.xxxx.net ←ホスト名.ドメイン名を指定

mydomain = xxxx.net ← ドメイン名を指定

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain $mydomain

# 550を指定し、存在しないユーザー宛てのメールを拒否し、即座にエラーメッセージを返すようします

unknown_local_recipient_reject_code = 550 ← コメントにする (# があれば削除)
#
unknown_local_recipient_reject_code = 450 ← # をつけてコメントアウト

mynetworks = 192.168.0.0/24, 127.0.0.0/8 ← 内部ネットワークアドレスとローカルホストアドレスを指定

relay_domains = $mydestination

alias_maps = hash:/etc/postfix/aliases

alias_database = hash:/etc/postfix/aliases

home_mailbox = Maildir/ ← メールボックスをMaildir方式を指定


※ メールボックスと、メールに容量制限する場合以下の二項目を追記します


mailbox_size_limit = 30720000 ←メールボックスの容量制限(例 30Mb)

message_size_limit = 1024000 ←メールのサイズ容量制限(例 1Mb)


smtpd_banner = $myhostname ESMTP unknown ← メールサーバー名を隠す


※メールボックスをMaildir方式を使用するので以下の二項目をコメントアウト

#
mail_spool_directory = /var/spool/mail

#mailbox_command = /some/where/procmail -a "$EXTENSION"


allow_percent_hack = yes

smtpd_sasl_auth_enable = yes ← 追記(cyrus-saslによるSMTP認証機能を有効に)

smtpd_sasl_local_domain = $mydomain ← 追記(ローカル認証のREALMの指定)

broken_sasl_auth_clients = yes ← 追記(Outlook Expressの認証でlogin可能)


フィルタをかけるの設定をまだしていない場合は下記を追記
smtpd_recipient_restrictions =
		permit_mynetworks,
		permit_sasl_authenticated, ← SMTP_AUTHに認証されたクライアントを許可
		reject_unauth_destination 

フィルタをかけるの設定をしている場合はSMTP-AUTHの記述のみ追記
smtpd_recipient_restrictions =
		permit_mynetworks,
		regexp:/etc/postfix/recipient_checks.reg,
		reject_non_fqdn_recipient,
		permit_sasl_authenticated, ← 追記(SMTP_AUTHに認証されたクライアントを許可)
		reject_unauth_destination
# /etc/rc.d/init.d/postfix restart ← 設定終了後に再起動

SMTP-AUTHの動作テスト


SMTP-AUTH 動作テスト

# telnet localhost 25 ← 25番ポートに接続
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.xxxxx.com ESMTP unknown ← メールサーバー名が非表示になっている事を確認(main.cfの設定)
EHLO localhost ← EHLO localhostと入力
250-server.xxxxx.com
250-PIPELINING
250-SIZE 1024000
250-ETRN
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 ← この2行の表示でSMTP-AUTHの動作はOK
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-XVERP
250 8BITMIME
quit ← 終了
221 Bye
Connection closed by foreign host.

Courier-IMAPの導入と設定

※注意!!
今まで、当サイトのcourier-imapでPOP before SMTPを行っていた場合は各種対処方法のページの、
Aptのアップグレード対象から除外にcourier-imapを登録していたと思いますが登録を削除して下さい。


# rpm -e qpopper ← courier-imapをインストールするので削除

# rpm -e imap ← courier-imapと競合するので削除

# apt-get install courier-imap ← インストール
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下の追加パッケージがインストールされます:
  courier-authlib
以下のパッケージが新たにインストールされます:
  courier-authlib courier-imap
アップグレード: 0 個, 新規インストール: 2 個, 削除: 0 個, 保留: 0 個
0B/852kB のアーカイブを取得する必要があります。
展開後に 2169kB のディスク容量が追加消費されます。
続行しますか? [Y/n]y ← y応答
変更を適用しています...
準備中...                   ########################################### [100%]
   1:courier-authlib        ########################################### [ 50%]
   2:courier-imap           ########################################### [100%]
完了

※ ここは特に設定する必要がないです。
 参考までに記載していますが、設定したい方は各自の環境で設定してください。


POP3 を使用しない場合
# vi /etc/courier-imap/pop3d ← 設定ファイル編集

POP3DSTART=NO ← NOに変更

POP3 over SSL を使用しない場合
# vi /etc/courier-imap/pop3d-ssl ← 設定ファイル編集

POP3DSSLSTART=NO ← NOに変更

IMAP を使用しない場合
# vi /etc/courier-imap/imapd ← 設定ファイル編集

IMAPDSTART=NO ← NOに変更

MAP over SSL を使用しない場合
# vi /etc/courier-imap/imapd-ssl ← 設定ファイル編集

IMAPDSSLSTART=NO ← NOに変更


各ソフトを起動させる

# /etc/rc.d/init.d/courier-imap start ← 起動
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl

# /etc/rc.d/init.d/courier-authlib start ← 起動
Starting Courier authentication services: authdaemond

自動起動設定の確認
# chkconfig --list courier-imap ← 確認
courier-imap    0:off   1:off   2:on    3:on    4:on    5:on    6:off

# chkconfig --list courier-authlib ← 確認
courier-authlib 0:off   1:off   2:on    3:on    4:on    5:on    6:off
自動起動設定になっていない場合(設定後にもう一度確認)
# chkconfig ソフト名 on

POP使用の場合は110番ポート、IMAP使用の場合は143番ポートを使用します。

まずルータの設定で25番ポート、110番(POPの場合)または143番(IMAPの場合)ポートを空けます。

次にここのサイトでポートがきちんと空いているかチェックします。

メールソフト(Outlook Express)でSMTP-AUTHの設定





ユーザー登録時、各自の環境に合わせて
POP3かIMAPを選択します。


@登録したユーザーの「プロパティー」を表示します。

A「サーバー」タブを選択

Bこのサーバーは認証が必要(V)にチェックを入れる

C「設定」タブをクリック
システムのユーザーID、PasswdとSMTP-AUTH認証用ユーザーID、Passwdを別にする場合のみ設定

D次のアカウントとパスワードでログオンする(O)にチェックを入れる

E登録した認証ユーザーとパスワードを記入

F「OK」をクリック

G「適用」をクリック

H「OK」をクリック




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.