- PR -

Postfix+MySQLを使用したメールサーバの構築について

1
投稿者投稿内容
ねぎま
会議室デビュー日: 2007/04/11
投稿数: 4
投稿日時: 2007-04-11 10:17
はじめて投稿させて頂きます。
現在、Postfix+MySQL+dovecotで仮想アカウントを使用したメール環境を構築しています。
ローカルPCのOutlook Expressから送信を行うとRelay access deniedと拒否をされてしまいます。
(info@example.comからtest@example2.comに送信)
受信側は特に問題なく動作しております。
おそらくリレーの設定に不備があると思われるのですが、どの部分に問題があるのか分からない状態です。
どなたか原因または解決策をご存知の方はいらっしゃいませんか?

環境と設定内容は以下になります。

◆RHEL ES4
◆Postfix-2.3.8
◆MySQL-5.0.24a
◆dovecot-1.0.rc29

◆postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 1
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
local_recipient_maps = unix:passwd.byname $alias_maps $virtual_mailbox_maps
local_transport = local
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydomain = example.com
myhostname = mail.example.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.2.10/README_FILES
sample_directory = /usr/share/doc/postfix-2.2.10/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
virtual_gid_maps = mysql:/etc/postfix/virtual-gid.cf.mysql
virtual_mailbox_base = /usr/local/vhosts
virtual_mailbox_domains = mysql:/etc/postfix/virtual-domains.cf.mysql
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/virtual-mailbox.cf.mysql
virtual_transport = virtual
virtual_uid_maps = mysql:/etc/postfix/virtual-uid.cf.mysql

◆virtual-gid.cf.mysqlファイル
 hosts = localhost
user = user
password = password
dbname = db
query = SELECT gid FROM virtual_account WHERE mail_address='%s'

◆virtual-uid.cf.mysqlファイル
 hosts = localhost
user = user
password = password
dbname = db
query = SELECT uid FROM virtual_account WHERE mail_address='%s'

◆virtual-mailbox.cf.mysqlファイル
 hosts = localhost
user = user
password = password
dbname = db
query = SELECT mailbox FROM virtual_account WHERE mail_address='%s'

◆virtual-domains.cf.mysqlファイル
hosts = localhost
user = user
password = password
dbname = db
query = SELECT domain FROM virtual_account WHERE mail_address='%s'

◆DBの内容
uid | gid | password | name | mail_address | mailbox | domain
--------------------------------------------------------------------------------------------
1000 | 1000 | password | info | info@example.com | example.com/info | example.com
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2007-04-11 10:49
引用:

ねぎまさんの書き込み (2007-04-11 10:17) より:
(info@example.comからtest@example2.comに送信)


要するにオープンリレーを許可するクライアントはどうなっているか?
ということだと思うのですが。
ネットワーク的に許すのか、smtp authで許すのか etc. ま、ポリシー次第ですが。
postconf -nの結果からすれば特に各種restrictionの設定をいじっているワケでは
なさそうなので
smtpd_recipient_restrictionsの設定で拒否されていると思いますよ。

ネットワーク的に許すならmynetworksをいじるんでしょうね。
postconf -nにはmynetworksはいないようなので
標準でサーバのブロードキャストドメインが設定されているはずです。
# postconf | grep ^mynetworks
で確認された方が良いでしょうね。
ローカルPCってのは違うネットワークセグメントなのでしょうか?

とりあえずどういうポリシーにしたいか分かりませんので
http://www.kobitosan.net/postfix/trans-2.3/jhtml/SMTPD_ACCESS_README.html
を読まれてみては如何ですか。

こういう時の処理内容をトレースしたいならdebug_peer_listに
ローカルPCを指定してdebug_peer_levelを上げてみれば詳細なログが採れますよ。
_________________
桃李不言 下自成蹊
ねぎま
会議室デビュー日: 2007/04/11
投稿数: 4
投稿日時: 2007-04-11 11:25
引用:

anightsさんの書き込み (2007-04-11 10:49) より:
引用:

ねぎまさんの書き込み (2007-04-11 10:17) より:
(info@example.comからtest@example2.comに送信)


早速のご返信ありがとうございます。

要するにオープンリレーを許可するクライアントはどうなっているか?
ということだと思うのですが。
ネットワーク的に許すのか、smtp authで許すのか etc. ま、ポリシー次第ですが。
→smtp_authで行く方向です。
 この状態でメールのやり取りの確認がとれてからsmtp_authの実装を始める予定です。

postconf -nの結果からすれば特に各種restrictionの設定をいじっているワケでは
なさそうなので
smtpd_recipient_restrictionsの設定で拒否されていると思いますよ。

ネットワーク的に許すならmynetworksをいじるんでしょうね。
postconf -nにはmynetworksはいないようなので
標準でサーバのブロードキャストドメインが設定されているはずです。
# postconf | grep ^mynetworks
で確認された方が良いでしょうね。

ローカルPCってのは違うネットワークセグメントなのでしょうか?
→ローカルのPCは全く別のネットワークセグメントです。


とりあえずどういうポリシーにしたいか分かりませんので
http://www.kobitosan.net/postfix/trans-2.3/jhtml/SMTPD_ACCESS_README.html
を読まれてみては如何ですか。
→このページは知りませんでした。。。熟読させて頂いております。

こういう時の処理内容をトレースしたいならdebug_peer_listに
ローカルPCを指定してdebug_peer_levelを上げてみれば詳細なログが採れますよ。
→なるほど、こういうのを探していました。。。

今から、教えて頂いた情報を元に調べていきます。
結果はまた後ほどご報告させて頂きます。


ねぎま
会議室デビュー日: 2007/04/11
投稿数: 4
投稿日時: 2007-04-17 12:42
anights様

お世話になっております。
お蔭様で実装ができました!!(少し時間がかかりましたが。。。)

anights様の情報を元にポリシーを整理し、何とか実装できました。
ポリシーが頭の中で整理できていない状態で設定をごちゃごちゃいじっていたので
収集つかなくなっていました。。。

大変遅くなりましたが、ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)