SMTPサーバ

現在、プロバイダはスパムメール対策のために自宅サーバにOP25Bを行っている。
(Outbound Port 25 Blocking>契約しているプロバイダ指定のメールサーバ以外からの送信を遮断)

Postfix 送信サーバーのインストール
# apt-get update
# apt-get install postfix

下記の質問をされますので答えていきます
Postfix Configuration
サーバーの形式 → internet site
[Where should mail for root go]
rootへのメールの場所 → NONE
メールネームの設定 → 収得したドメイン名
整形の設定(append domain to simple address) → No

[Other destinations to accept mail for? (blank for none)]
受信ドメイン名 → 収得したドメイン名 ドメイン名, localhost.localdomain, localhost

メールキューの同期更新を強制しますか? → いいえ

※後で設定の変更をやりなおす時は
# dpkg-reconfigure postfix

設定ファイル編集 
/etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP ←外部に余計な情報を出さないように設定
biff = no
append_dot_mydomain = no
myhostname = localhost
mydomain = ドメイン名
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname

mydestination =   ドメイン名, localhost.localdomain, localhos

relayhost =プロバイダの中継サーバ名 ロバイダの中継サーバを指定
※OP25B対策 relayhost = [プロバイダの中継サーバ名]:25 別な表記

mynetworks = 127.0.0.0/8 192.168.1.0/24
LAN内のパソコンからメールを送信できるように任意に設定。
デフォルトのままだと telnetやsshでサーバにログインしたユーザーしか使えません
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# home_mailbox = Maildir/   popを使用 #コメントをつける

///////////////////////////////////////////////////////////

MailファイルをMbox形式ではなく、Maildir形式とするために以下を追加
home_mailbox = Maildir/
今回は受信サーバーにcourier-imapを使用します。
(ローカル配送をMaildir形式にします。
MuttやCourier-IMAPに対応するため。
POPのみで受信される場合は、設定しなくても大丈夫。
逆にPOPからはディレクトリ構造が違うので受信できなくなるみたい。 )

/////////////////////////////////////////////////////////

Postfix再起動
# /etc/init.d/postfix reload

簡単な動作確認
$ mail ○○○@○○○.com 送り先のメールアドレス
Subject: test
this is test mail
.
Cc:

mailコマンドを使って、自分が受信できるアドレス宛にテストメールを送ってみる。
本文入力後は、”.”(ドット)だけを入力して改行。
Cc:に対しても改行のみ。
ちゃんとテストメールが届けばほぼ大丈夫>しかし、OP25Bでブロックされて届かない

メールテスト
ローカルから直接telnetでテストしてみました。
$ telnet localhost 25

mail from: test@localhost
rcpt to: hogeuser@.hoge 送り先のメールアドレス
data 本文
This is Test mail
.

quit
これでテストメールが届きます。
quitmailxやsendmailコマンドで実行してもいいです。
(しかし、OP25Bでブロックされて届かない)

///////////////////////////////////////////////////////////////

587番
メール送信時の安全性を高めるためにユーザ認証システムを加えたものを「587番ポート」といいます。
2006年12月14日
OP25B
主なインターネットプロバイダの対応状況について
・BIGLOBE
・InfoSphere
・J:COM NET
・@nifty
・So-net
・WAKWAK
・ぷらら

postfix ポート587開けるか?
/etc/postfix/master.cf
submission inet n – n – – smtpd
この1行のコメントアウトをはずすしてpostfix reloadするだけ。
(-o smtpd_etrn_restrictions=reject も#をはずす)

それでポート25番だけでなく587番でもPostfixがSMTPサーバとして待ち受けをはじめてくれるはず。

$ grep 587 /etc/services
submission 587/tcp msa # mail message submission
submission 587/udp msa # mail message submission

/////////////////////////////////////////////////////////////////

OP25B続き
回避策はいくつかあるが、ひとつはBIGLOBEのメールサーバを経由する方法。
BIGLOBEでは中継サーバを用意していて、事前登録すれば利用できる。

以前、ISPのBIGLOBEの「25番ポートブロック(Outband Port 25 Blocking)」対策で、
BIGLOBEからの正式な通知に従い、postfixの設定ファイルで中継サーバを変更したが
、実はそれだけではメール送信ができなかったのだ。
注意事項に「ご利用のメールソフトがSMTP認証に対応している必要があります。」とあり、
PostfixをSMTPクライアントとしてSASL認証させる必要があるのだ。

設定変更の手順としては、
(1)/etc/postfix/main.cf の設定を変更
(2)/etc/postfix/sasl_passwd を作成し、認証情報を記述
(3)sasl_passwdをdb化し、postfixをreload
となる。

/etc/postfix/main.cfは、次のように設定した。

#中継サーバを指定
relayhost = [XXXXX.biglobe.ne.jp]:25

#下記を追加
smtp_sasl_type = cyrus
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

次に、/etc/postfix/sasl_passwd を作成し、次のように記述する。saslpasswdの所有者はrootで、パーミッションは600に設定する。

#YYY.biglobe.ne.jpは従来のSMTPサーバ
[XXXXX.biglobe.ne.jp]:25 アカウント名@YYY.biglobe.ne.jp:メールパスワード

/etc/postfix/sasl_passwd を作成したら、db化する。その後、postfixの設定を再読み込みすれば完了。

# postmap /etc/postfix/sasl_passwd
# /etc/init.d/postfix reload

///////////////////////////////////////////////////////////////////////

TCPポート587番に変更+SMTP認証
メール送信サーバ587番ポート対応設定方法

説明
インターネット接続に一部の他社プロバイダをご利用の方において、
迷惑メール対策などで25番ポートが閉ざされている場合(※)でも、
BIGLOBEメールサーバを利用したメール送信をできるようにするための説明です。
なお、「BIGLOBE光 with ひかりone」関連コースをご利用の方も、これに該当します。
こちらの設定がご利用いただけるのは、SMTP認証に対応したメールソフトに限ります。
ここではOutlook Express 6.0を例にあげています。

(※) 迷惑メール業者による大量迷惑メール送信を制限するために、
25番ポートを閉じて、直接メールを送信できないようにすることを25番ポートブロックといいます。

手順
「ツール」→「アカウント」で、変更したいアカウントを選択し、[プロパティ]ボタンをクリックする。
「サーバー」タブを選択し、以下の項目を設定する。

① 「サーバー情報」の欄の「受信メール(POP3)」と「送信メール(SMTP)」に”mail.biglobe.ne.jp”を入力する。
※ “m**.biglobe.ne.jp”と入力している方は、“mail.biglobe.ne.jp”へ変更してください。
詳しくは「サブドメイン「m**」の方のメール設定方法の変更について」のページをご覧ください。

② 「受信メール サーバー」の欄の「アカウント名」に、メールアドレスを入力する。
※ @マークの右側を含めたメールアドレスを入力してください。
例:sample@***.biglobe.ne.jp

③ 「送信メール サーバー」の欄の「このサーバーは認証が必要」にチェックを入れる。

不正中継テスト
“不正中継テストを下記のサイトで実施する。
SMTPサーバはスパムメールやメールボムの送信元として不正使用される
可能性がありますので気をつけましょう。”
長崎ネットワークサービス
Abuse.net http://www.abuse.net/relay.html
RBL.jp http://www.rbl.jp/

自分ですることは限界があるので、第三者サービスを紹介します。
無料ですので、このあたりで自分のサーバをテストしてみてもいいですね。
第三者中継チェック
RBL.JPとかABUSE.NETを使ってチェックします。
引っかかる場合は、設定がまずいって事かな・・・

/////////////////////////////////////////////////////////////////

受信リスト追加(マルチドメイン対応)
受信ドメイン等をキッチリ設定できたのであれば、次は受信ユーザの設定です。
ここではhogeuserがすでにuseraddされているとします。
さて、仮想的に複数ユーザ(@マークの前)をhogeuserで受信できるようにしましょう。

# vi /etc/aliases
[追加]
mail01: hogeuser
mail02: hogeuser
mail03: hogeuser設定反映

# newaliases確認

# less /var/log/mail.log
受信ドメインがhoge1.hoge、hoge2.hogeであったとしますと、
上記の設定を行うことで、下記のメールアドレスがhogeuserで受信できます。

mail01@hoge1.hoge
mail02@hoge1.hoge
mail03@hoge1.hoge
mail01@hoge2.hoge
mail02@hoge2.hoge
mail03@hoge2.hoge

Procmailで振り分けたり、Muttを使ってターミナル上で見れます。
もちろん、Courier-IMAPやCourier-POPで別マシンから受信できます。

////////////////////////////////////////////////////////////

Postfixのローカルメール配信形式の設定
 Postfixではローカルホストへのメール配信として以下の3つの形式を使用することができ、
/etc/postfix/main.cf で簡単に切替可能です。

 ・sendmail 形式のメールボックス
 ・ホームディレクトリ内のメールボックス
 ・qmail で採用されているMaildir形式

sendmail形式のメールボックス
 これがデフォルトのPostfixの振る舞いです。
/etc/postfix/main.cf 内の関連するキーワードはmail_spool_directory ですが、
特に指定しない場合はSendmailで標準的に利用される /var/spool/mail 以下に各ユーザのメールボックスファイルを作成します。
mail_spool_directory = /var/spool/mail      POPはこれ
/var/spool/mail/user1ファイル

ホームディレクトリ内のメールボックス
 同じディレクトリに多くのファイルが含まれている場合、ファイルへのアクセスに時間画かかるようになります。
また、管理の上で全ユーザのファイルが一つのディレクトリに入っているのを好まない方もいるのではないでしょうか?
 そのような場合、全てのユーザのメールボックスファイルを一つのディレクトリ内に配置するのではなく、
各ユーザのホームディレクトリに配置することも可能です。
設定は/etc/postfix/main.cf 内で以下のような指定をするだけです。
home_mailbox = Mailbox
/home/user1/Mailboxファイル

qmailで採用されているMaildir形式
 qmailでも採用されている、より信頼性の高いMaildir形式を利用するには/etc/postfix/main.cf 内で以下のような指定をします。

home_mailbox = Maildir/ IMAPはこれ

 Maildir/ ディレクトリの設定変更後、初めてユーザがメールを受信したときに
そのユーザのホームディレクトリに以下のようなMaildirの構造が作成されます。
/home/user1/Maildir/cur  既読のメール
/home/user1/Maildir/new  新規のメール
/home/user1/Maildir/tmp  新規メールの前処理

//////////////////////////////////////////////////////////

postfix で Maildir 形式にして、かつ /var/spool/mail/usr/ 以下にスプールする
ホームディレクトリに配送する訳では無いので home_mailbox をコメントアウトして、
スプールディレクトリに Maildir 形式で配送する設定にします。
指定するディレクトリは /var/spool/mail で無くても良いです。

#home_mailbox = …
mail_spool_directory = /var/spool/mail/

あとは各ユーザの Maildir を作成。

mkdir -p /var/spool/mail/user1
chown user1:user1 /var/spool/mail/user1

chmod 700 /var/spool/mail/user1

これで user1 宛のメールが /var/spool/mail/user1/new/ に作成されます。
スラッシュ足すだけでよかったのね