9463


ネットワーク初学者です。右も左もわからぬ故、おかしなことが書いてあると思いますが、どうかよろしくお願いします。

現在学習用のローカルネットワークをvagrant +
virtualboxで作成し、その仮想マシン空間で色々試しているところです。ネットワーク内にはネームサーバーとメールサーバー用にそれぞれマシンを起動させました。  
ネームサーバーのゾーンファイルは以下の通りです。

[code]

    $TTL    86400
    vagrant.      IN SOA  ns.vagrant. root.localhost. (
                201504201755  ; serial
                10800         ; refresh
                900           ; retry
                604800        ; expiry
                3600)         ; minimum
    
    vagrant.    IN NS     ns.vagrant.
    vagrant.    IN MX 10  mail.vagrant.
    ns.vagrant.   IN A    192.168.50.5
    mail.vagrant. IN A    192.168.50.8
    
[/code]

基本的にローカルネットワーク内のキャッシュリゾルバとして動作するように意図しつつ、外部への再帰問合せについてはフォワード設定をすることで調整してあります。またメールの実験をしたかったので、イントラネット用のDNSとして使えるようにゾーン設定もしてみた次第です。  
nslookupやdigを用いて試した範囲では名前解決自体は自サーバーからも他サーバーからもうまくいっています。w3mでgoogleが参照できるので、この用途ではネームサーバーに問題は無いと考えています。

これと、メールサーバーではmain.cfを調整して、以下のような設定にしました。  
全部を書くと凄い量になるので、postconf で抜粋した内容が以下になります。

[code]

    [vagrant@mail ~]$ 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
    data_directory = /var/lib/postfix
    debug_peer_level = 2
    html_directory = no
    inet_interfaces = all
    inet_protocols = all
    mail_owner = postfix
    mailq_path = /usr/bin/mailq.postfix
    manpage_directory = /usr/share/man
    mydestination = $myhostname, $mydomain, localhost
    mydomain = vagrant
    myhostname = mail.vagrant
    mynetworks = 192.168.50.0/24, 127.0.0.0/8
    myorigin = $mydomain
    newaliases_path = /usr/bin/newaliases.postfix
    queue_directory = /var/spool/postfix
    readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
    sample_directory = /usr/share/doc/postfix-2.6.6/samples
    sendmail_path = /usr/sbin/sendmail.postfix
    setgid_group = postdrop
    unknown_local_recipient_reject_code = 550
    
[/code]

この状態で試しに ns.vagrant(ネームサーバー) からtelnet
を実行し、メールサーバー(mail.vagrant)に向けて送信要求を出してみました。といっても送る相手を作っていなかったので、自分で自分に送ってみることにしました。(どのホストもvagrantという名前のユーザーしか作ってない為)

[code]

    [vagrant@ns ~]$ telnet mail.vagrant 25
    Trying 192.168.50.8...
    Connected to mail.vagrant.
    Escape character is '^]'.
    220 mail.vagrant ESMTP Postfix
    MAIL FROM:<vagrant@vagrant>
    250 2.1.0 Ok
    RCPT TO:<vagrant@vagrant>
    250 2.1.5 Ok
    DATA
    354 End data with <CR><LF>.<CR><LF>
    this is a test.
    .
    250 2.0.0 Ok: queued as A017080477
    quit
    
[/code]

できるかと思いましたが、mail.vagrantにvagrantユーザーでログインし、mail
コマンドを実行しても何もメールはないという応答しか返ってこないので失敗でした。確認すると、メールサーバーのログは以下のようになっていました。

[code]

    Apr 22 10:27:42 mail postfix/smtpd[7412]: connect from unknown[192.168.50.5]
    Apr 22 10:28:08 mail postfix/smtpd[7412]: 063C280477: client=unknown[192.168.50.5]
    Apr 22 10:28:51 mail postfix/cleanup[7415]: 063C280477: message-id=<> 
    Apr 22 10:28:51 mail postfix/qmgr[7364]: 063C280477: from=<vagrant@vagrant.vagrant>, size=172, nrcpt=1 (queue active)
    Apr 22 10:28:51 mail postfix/smtp[7416]: 063C280477: to=<vagrant@vagrant.vagrant>, orig_to=<vagrant@vagrant>, relay=none, delay=58, delays=58/0.05/0/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=vagrant.vagrant type=AAAA: Host not found)
    Apr 22 10:28:51 mail postfix/cleanup[7415]: 6C2E580479: message-id=<20150422012851.6C2E580479@mail.vagrant>
    Apr 22 10:28:51 mail postfix/qmgr[7364]: 6C2E580479: from=<>, size=2128, nrcpt=1 (queue active)
    Apr 22 10:28:51 mail postfix/bounce[7417]: 063C280477: sender non-delivery notification: 6C2E580479
    Apr 22 10:28:51 mail postfix/qmgr[7364]: 063C280477: removed
    Apr 22 10:28:51 mail postfix/smtp[7416]: 6C2E580479: to=<vagrant@vagrant.vagrant>, relay=none, delay=0, delays=0/0/0/0, dsn=5.4.4, status=bounced (Host or domain name not found. Name service error for name=vagrant.vagrant type=AAAA: Host not found)
    Apr 22 10:28:51 mail postfix/qmgr[7364]: 6C2E580479: removed
    Apr 22 10:33:51 mail postfix/smtpd[7412]: timeout after END-OF-MESSAGE from unknown[192.168.50.5]
    Apr 22 10:33:51 mail postfix/smtpd[7412]: disconnect from unknown[192.168.50.5]
    
[/code]

4行目、5行目を見ておかしいと気が付きました。メールアドレスがvagrant@vagrant.vagrant
となっているからです。多分これが原因でドメインの名前解決ができなかったんだろうと思いました。  
ただ問題は、何が悪くてこうなるのか、その理由が分からないということです。

ちなみにこの後、同じようにtelnetでメールサーバーに接続し、送信元と先のメールアドレスを「vagrant@mail.vagrant」と変更すると、メールサーバーのローカルユーザー'vagrant'には、前回とは異なりメールが届きました。

ちょっと訳が分からなくなってしまっていて、ぜひ御教示いただけると助かります。  
必要な情報が書かれてないなどありましたら教えてください。  
OSは全て centos 6.6, postfixは2.6.6 です。  
よろしくおねがいします。


CC BY-SA 3.0
2015-04-22T12:36:42.787
9461
2015-04-22T12:47:27.020
9403
question
centos vagrant postfix
postfixを使ってのローカルネットワーク内メール送受信に失敗してしまいます


> メールアドレスがvagrant@vagrant.vagrant
> となっているからです。多分これが原因でドメインの名前解決ができなかったんだろうと思いました。

デフォルトで有効な `append_dot_mydomain` によって、ドメイン部分のないメールアドレスに `$mydomain`
が追加されたからだと思われます。

> 「vagrant@mail.vagrant」と変更すると、メールサーバーのローカルユーザー'vagrant'には、前回とは異なりメールが届きました。

`.vagrant` がドメイン部分だと見なされて、`append_dot_mydomain` による `$mydomain` の追加が行われないためです。


CC BY-SA 3.0
2015-04-22T12:47:11.047
9462
2015-04-22T12:47:11.047
2494
9461
answer


手元に今手頃なpostfixが無いので恐縮ですが、`append_dot_mydomain`をnoに設定すると解決しませんか？

Postfixアドレス書き換え  
<http://www.postfix-jp.info/trans-2.3/jhtml/ADDRESS_REWRITING_README.html>

IPv6を使わないのであれば`inet_protocols`もallからipv4に変更した方がいいかもしれません。


CC BY-SA 3.0
2015-04-22T12:47:27.020
9463
2015-04-22T12:47:27.020
62
9461
answer