プロが教えるわが家の防犯対策術!

内部ネットワーク(linux01:192.168.1.1, linux02:192.163.1.2)でlinux02からメールをlinux01経由でインターネットに送ろうとしています.しかし
$ mailq
/var/spool/mqueue (1 requests)
----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
************ 0 Tue Apr 24 14:40 username
(host map: lookup (outerdomain.ne.jp): deferred)
name@outerdomain.ne.jp
となってキューから出て行きません.
linux01ではインターネット側にあるDNSサーバが引けますが,linux02からはDNSサーバは引けない設定にしています.
ネットで調べた感じだと,DNSが引けなくてもSMART_HOSTの設定先にリレーされると思うのですが,うまくいきません.
よろしくお願いいたします.

OS:Linux version 2.4.29 (root@ita) (gcc version 3.0.4 (Red Hat Linux 7.2 3.0.4-1)) #4 SMP Fri Apr 15 10:02:15 JST 2005
sendmail Version 8.11.6

--- sendmail.mc in linux02 ---
divert(-1)
divert(0)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
define(`SMART_HOST',`[linux01]')dnl
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
FEATURE(`accept_unresolvable_domains')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
Cwlocalhost.localdomain
---

--- /etc/mail/access in linux01 ---
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
linux02 RELAY
---

A 回答 (7件)

色々と調べていますが、難しいですねぇ。


( さすがに SendMail です )

ところで 行き詰まった時には、私の経験から言って
とにかく 何でもカンでも “人に話してみる” ことが
大切です。
現状を伝えていく過程で、自分自身で 過ちを発見する
ことは良くあります。 諦めずに 頑張りましょう。

( あと良くあるのが、当事者通しのコミュニケーション不足で
 あまりにも 当たり前すぎることは 【周知の事実】であると
 勝手に思い込んでいて、重要な設定が抜けていたなんてことは、
 “日常茶飯事” です。)


本題に戻って、私の経験から言って メールのリレーは、
“SMART_HOST”の定義だけで 特に問題なくうまく
いっています。
→ Sun Solaris、Fedoracore、Free BSD . . .
 これらの SendMailで 全てがうまく出来ています。

疑念1:
 何故、“Name server timeout”なのか?
 → smtp:[192.168.1.1] とやってもダメでしたよねぇ?
 “smtp:[]”としましたか?

疑念2:
 もしかすると原因は、Linux01側にあるのかもしれませんねぇ。

疑念3:
 何故、Linux02側の設定として DNSが引けない設定に
 されているのでしょうか?
 この点が私には 理解できないことです。
 もし、セキュリティポリシー上での判断であるとすれば、
 DNSの参照先として Linux01 とすれば良いのでは
 ないでしょうか?

疑念4:
 思え起こせば、何かイレギュラーなことを なさって
 いませんか?
 ( あぁ、そう言えば 、こんな事をしていたってけ . . .
  というのがあれば、漏らさずに教えてください。)

この回答への補足

ありがとうございます.助かります.

1:
"smtp:"をつけてみましたが上手くいきませんでした.

2:
linux01 と linux02 のメール送信メッセージのやり取りを見る方法は何かありますか?

3:
linux02 は計算サーバとして使っていまして,
linux02 から外部にアクセスすることは無かったので,
DNS デーモンを起動していません.
計算終了時に自動でお知らせメールを送信しようとして今回の問題がおきました.
とくに理由があって DNS を止めているわけでは無いですが,
仕組みと設定の仕方がよく分かっていなかったので.

4:
linux01,02 は大学のイントラネット内にあります.
linux01 にも named は立ち上がっていませんが,なぜか外部にメール送信ができます(大学のネームサーバを参照してる?).
下のドメイン名は大学のものになっています.

linux01.domainname.ac.jp

linux01,02 は業者さんが入れてくれた設定からあまりいじっていないので
基本的な設定になっているとは思いますが,よく分かりません.

SMART_HOST を設定していても名前解決ができないと送信されないということはあるのでしょうか?

補足日時:2007/05/05 16:37
    • good
    • 0
この回答へのお礼

>下のドメイン名は大学のものになっています.
>linux01.domainname.ac.jp

紛らわしく書いてしまいました.
上の意味は「domainname.ac.jp」が大学のアドレスになっている,という意味です.
あと,大学のネームサーバには linux01 は登録されていないので,
外部から「linux01.domainname.ac.jp」と打っても参照できません.

有難うございます.

お礼日時:2007/05/05 17:29

こんにちは.


# まだ,解決していなかったんですね….


今の状況がわからないですが,とりあえず騙されたと思って下記を確認してみて下さい.
で,とりあえず0から.

1.
linux02# telnet linux01のIPアドレス 25

でlinux01へ接続できますか.
(ここでメールを送信できればなお良いです)

telnet接続後のsmtpコマンドは適当に調べてみて下さい.


2.
SMART_HOSTはいずれかを設定(&他の設定もちゃんと見直し後)し,実際にメール送信してみて下さい.

define(`SMART_HOST',`[192.168.1.2]')dnl
または
define(`SMART_HOST',`linux01.domainname.ac.jp')dnl


3.
linux02# mailq
linux02# mailq -Ac

linux01# mailq
linux01# mailq -Ac

でQueueに溜まっているメールを確認できます.


4.
linux01# tail -f /var/log/maillog
linux02# tail -f /var/log/maillog

でメール送受信のログをリアルタイムに確認できます.



これでlinux02-->linux01へのメール送信の確認ができると思います.


※linux01は,linux02のメールを受信でき,外部へ送信できる前提.
※エラーメールが迷子になり,管理者さんを困らせないようにご注意を.


# というか,今回の要件であればわざわざsendmailをマジメに設定しなくても,
# 他にもやり方は色々あると思いますけどね….

この回答への補足

ご回答ありがとうございます.

1.つながりました.
$ telnet 192.168.1.1 25
Trying 192.168.1.1...
Connected to linux01.domainname.ac.jp (192.168.1.1).
Escape character is '^]'.
220 linux01.domainname.ac.jp ESMTP Sendmail 8.11.6/8.11.6; Mon, 7 May 2007 12:59:56 +0900

2.下のように設定しました.
define(`SMART_HOST',`[192.168.1.1]')dnl

3.
linux02$ mailq
l474uCQ25132 1 Mon May 7 13:56 user1
(host map: lookup (yahoo.co.jp): deferred)
myaccount@yahoo.co.jp

linux01$ mailq
/var/spool/mqueue is empty

4.
linux02$ tail -f /var/log/maillog
May 7 13:09:24 linux02 sendmail[24895]: l4749Oc24895: from=user1, size=34, class=0, nrcpts=1, msgid=<200705070409.l4749Oc24895@linux02.domainname.ac.jp>, relay=user1@localhost
May 7 13:09:24 linux02 sendmail[24898]: l4749Oc24895: to=user1@linux01, ctladdr=user1 (506/100), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30034, relay=[192.168.1.1] [192.168.1.1], dsn=2.0.0, stat=Sent (l4749O706573 Message accepted for delivery)
May 7 13:56:12 linux02 sendmail[25132]: l474uCQ25132: from=user1, size=44, class=0, nrcpts=0, msgid=<200705070456.l474uCQ25132@linux02.domainname.ac.jp>, relay=user1@localhost
May 7 13:56:12 linux02 sendmail[25132]: l474uCQ25132: to=myaccount@yahoo.co.jp, delay=00:00:00, mailer=relay, pri=44, dsn=4.4.3, stat=queued

linux01$ tail -f /var/log/maillog
なし

となりました.
> # というか,今回の要件であればわざわざsendmailをマジメに設定しなくても,
> # 他にもやり方は色々あると思いますけどね….
そうですね,今流れているジョブが終わったら DNS を設定してみます.
ただ,SMART_HOST を設定したのに何で行かないのか疑問だったのでこだわってしまいました.

補足日時:2007/05/07 15:01
    • good
    • 0

ところで、質問ですが



--- /etc/mail/access in linux01 ---
を見ました。

現在の Linux01側の状況ですが、通常のクライントPCから
一般のメールソフトを用いて、Linux01経由で メールの
送信は出来ているのでしょうか?
拒否されているのでしょうか?

更に質問ですが、Linux02のDNSは Linux01を参照されて
いるということですよねぇ?

この回答への補足

ご回答ありがとうございます.

linux01 には linux02 がぶら下がっているだけで,
ほかの PC はつながっていません.
したがって一般のメールソフトで送信できるかどうか試していません.

DNS ですが,linux02 は引くことができない設定にしています.
linux01 への参照は hosts に

--- /etc/hosts in linux02 ---
192.168.1.1 linux01.localdomain.ne.jp linux01
192.168.1.2 linux02.localdomain.ne.jp linux02
---

として参照しています.
説明不足で申し訳ありません.
よろしくお願いいたします.

補足日時:2007/04/30 13:05
    • good
    • 0

#3です.



やっぱり訂正です.
Aレコードでなく,単に正引きでOKだったかもしれません.
# CF かコウモリ本見れば確認できますけどね.
    • good
    • 0

こんにちは.



記憶だけですが...

[]はMXを引くかどうか指定だったハズです.
[FQDN]はAレコードが引ければOKです.(nonmx)
MTAの変更があまり無い所(や管理や組織や連絡網や(権力が)しっかりしている所)ではAレコード検索のトラフィックさえもったいないので[IPアドレス]を指定したります.

> 451 outerdomain.ne.jp: Name server timeout
がlinux01が出しているのであれば,

>“[]”つき:linux01には届くがインターネットには送れない
linux01がouterdomain.ne.jpを引けないだけではないでしょうか.

# ところで,outerdomain.ne.jpは自サイト? 外部サイト?

この回答への補足

ご回答ありがとうございます.

outerdomain.ne.jp は外部サイト(yahooメールなど)です.
linux01 からは送信され,届きます.

また,451 は linux02 から出されています.

よろしくお願いいたします.

補足日時:2007/04/26 09:30
    • good
    • 0

ところで、 . . . . .



> 内部ネットワーク(linux01:192.168.1.1, linux02:192.163.1.2)

とありますが、これは正確な IPアドレス ですか?

もし、投稿時の誤字でないとすれば、明らかに IPアドレスが
間違っています。 (ネットマスク=255.255.255.0)

linux02:192.163.1.2 は、“192.168.1.2” でないと送れませんが
このアドレス表記は誤字ですか? それとも真実でしょうか?

この回答への補足

あ,すいません.誤字です.
本当は
linux02:192.168.1.2
です.
ご指摘ありがとうございました.

補足日時:2007/04/26 09:27
    • good
    • 0

構文が間違っています。


“[ ]”は、不要だと思います。

これでやってみてください。
define(`SMART_HOST',`linux01')dnl


“[]”を付けるのは、IPアドレスを
直接指定する時です。
(私の記憶が間違っていなければ)

例:
 smtp:[192.168.1.1]

この回答への補足

回答ありがとうございます.
試してみたら次のようになりました.

“[]”なし:linux01にもインターネットにも送れない
“[]”つき:linux01には届くがインターネットには送れない
[192.168.1.1]でやっても“[]”つきと同じになりました.

しばらくたつとrootに下のようなメッセージが届きます.

----- The following addresses had transient non-fatal errors -----
username@outerdomain.ne.jp

----- Transcript of session follows -----
451 outerdomain.ne.jp: Name server timeout
Warning: message still undelivered after 4 hours
Will keep trying until message is 5 days old

補足日時:2007/04/25 07:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!