タイトル | : どこかを参考にしたのでしょうか? |
記事No | : 8451 |
投稿日 | : 2012/07/18(Wed) 19:47 |
投稿者 | : おやじ |
本件は、Postfixに関する問題であり、これが片付いてもdovecotで問題がでる可能性が残ります。 インラインで気が付いたことを示します。 なお、下記を参照すると良いと思います。 http://www.postfix-jp.info/trans-2.3/jhtml/VIRTUAL_README.html#virtual_mailbox
> 現在、CentOS 5.7 で postfix-2.2.3 と dovecot-1.0.7 を使ってメールサーバを構築しようとしています。 > > やりたいことですが、 > (1) 現在、動いているドメイン(hogehoge.comとします)のサブドメイン(newmail.hogehoge.com とします)でメールサーバを動かします。 > (2) メールユーザはサーバにログインさせません。つまり、/etc/passwd ファイルに登録しません。 > (3) メールユーザの認証はドメイン付きでさせます。つまり、Outlook Express 等において、sample01@hogehoge.com の受信メールサーバのユーザ名の欄は sample01@hogehoge.com とします。 > (4) メールボックス形式でメールスプールを構成します。 > (5) 認証を dovecot 認証とします。パスワードは PLAIN テキストにしています。 > > これを実現するために設定を行っていますがどうやってもエラーになります。以下、/var/log/maillog ですが、 > ---- ここから ---- > Jul 17 17:15:08 newmail postfix/smtpd[5687]: connect from unknown[***.***.***.***] > Jul 17 17:15:08 newmail postfix/smtpd[5687]: NOQUEUE: reject: RCPT from unknown[***.***.***.***]: 550 5.1.1 <sample01@newmail.hogehoge.com>: Recipient address rejected: User unknown in local recipient table; from=<********@********.**.jp> to=<sample01@newmail.hogehoge.com> proto=ESMTP helo=<***.********.**.jp> > Jul 17 17:15:09 newmail postfix/smtpd[5687]: disconnect from unknown[***.***.***.***] > ---- ここまで ---- > という具合です。 > > 設定関係ですが、 > > shell> postconf -n > alias_database = hash:/etc/aliases > alias_maps = hash:/etc/aliases > broken_sasl_auth_clients = yes > command_directory = /usr/sbin > config_directory = /etc/postfix > daemon_directory = /usr/libexec/postfix > debug_peer_level = 2 > delay_warning_time = 1h > html_directory = no > inet_interfaces = all > mail_owner = postfix > mailq_path = /usr/bin/mailq.postfix > manpage_directory = /usr/share/man > message_size_limit = 102400000 > mydestination = $myhostname, localhost.$mydomain, localhost, hogehoge.com
上記マニュアルにいろいろ書かれていますが、virtual_mailbox_domainsとvirtual_alias_mapsとmydestinationはダブリ禁止です。 従って、おやじもやっていますが、mydestinationは下記のように = の右側を記述しないように記述してください。コメントアウトは駄目です。デフォルト値が設定されてエラーがでます。
mydestination =
> myhostname = newmail.hogehoge.com
因みに、 myhostname(newmail.hogehoge.com)のみバーチャルとするなら、mydestinationから除き、virtual_mailbox_domains = $myhostname のみとすればいいのでは?
> mydomain = hogehoge.com > newaliases_path = /usr/bin/newaliases.postfix > queue_directory = /var/spool/postfix > readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES > sample_directory = /usr/share/doc/postfix-2.3.3/samples > sendmail_path = /usr/sbin/sendmail.postfix > setgid_group = postdrop > smtpd_banner = $myhostname ESMTP unknown > smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination > smtpd_sasl_auth_enable = yes > smtpd_sasl_local_domain = $myhostname > unknown_local_recipient_reject_code = 550 > virtual_alias_maps = hash:/etc/postfix/virtual > virtual_gid_maps = static:5000 > virtual_mailbox_base = /var/spool/mail/vhosts > virtual_mailbox_domains = $myhostname, localhost.$mydomain $mydomain, hogehoge.com
カンマ区切りで書けていないですし、$mydomainとhogehoge.comはダブリです。
virtual_mailbox_domains = $myhostname, localhost.$mydomain, $mydomain
あと、virtual_mailbox_domainss宛てのメール配送の指定として下記を追加。(デフォルトなのでなくても可)
virtual_transport = virtual
> virtual_mailbox_maps = hash:/etc/postfix/vmailbox > virtual_minimum_uid = 100 > virtual_uid_maps = static:5000
(snip)
> shell> cat /etc/postfix/vmailbox > sample01@newmail.hogehoge.com hogehoge.com/sample01/ > sample02@newmail.hogehoge.com hogehoge.com/sample02/
mailbox形式は停電などで全て飛んでしまう危険があるので、Maildir形式のほうがよいと思いますが、どうしてもmailbox形式とするなら、最後のスラッシュを削除しないとだめです。 最後がスラッシュで終わっているとMaildir形式扱いになります。言い換えると、バーチャルの場合はここの書き方でメールボックス形式が決まるので両形式の混在ができます。
> shell> cat /etc/passwd | grep mails > mails:x:5000:5000::/home/mails:/sbin/nologin > > shell> cat /etc/group | grep mails > mails:x:5000:
これは、dovecotのためのものですよね? postfixで指定しているvirtual_gid/uidは登録する必要はなく、メールボックスのオーナとしてだけしか利用されないのでpostfixとしては敢えて登録は必要なく、/var/spool/mail/vhosts/hogehoge.comを5000:5000としておくだけの話です。 > > メールの送信はこのサーバ(newmail.hogehoge.com)上から SMTP コマンドを使って他のサーバに送信ができます。受信側からメールの返信を行うと、ログを見る限りはサーバに到達しているようですが、reject されて戻ってしまいます。また、このサーバ上から SMTP コマンドを使って root を送信者として sample01 宛にメールを送信するとやはり user unknown で戻ってきてしまいます。 > > shell> telnet localhost 25 > Trying 127.0.0.1... > Connected to localhost.localdomain (127.0.0.1). > Escape character is '^]'. > 220 newmail.hogehoge.com ESMTP unknown > HELO newmail.hogehoge.com > 250 newmail.hogehoge.com > MAIL FROM: root@newmail.hogehoge.com > 250 2.1.0 Ok > RCPT TO: sample01@newmail.hogehoge.com > 550 5.1.1 <sample01@newmail.hogehoge.com>: Recipient address rejected: User unknown in local recipient table
まさに。このエラーはユーザがいないからなので、/var/spool/mail/vhosts/hogehoge.comのオーナが原因と思います。(mydistnation関係も)
|