タイトル | : どこかを参考にしたのでしょうか? |
投稿日 | : 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関係も)