竹形誠司 ブログ
ご質問    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様
お世話になります。

OS:Debian lenny で「Java+MySQL+Tomcatで作る掲示板とブログ」を試しているものです。
/apps/james/SAR-INF/config.xml の編集で、
P19に書いてある通り、<servername>のドメイン名を普段使っている会社のドメイン名に変更( 例】ABC.com )している。
<dnsserver><servers><server>のIPアドレスは、
@127.0.0.1 と
A会社のローカルエリアにあるPCが「ローカルエリア接続」のプロパティ「TCP/IP」の設定で使っている会社のルーターのDNSサーバのIPアドレス( 例】192.168.0.1 )
の二通りを試しました。

送信コマンドは、P22ページの方法に習って行いました。(下記)
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.debian.ibaraki SMTP Server (JAMES SMTP Server 2.3.2) ready Wed, 18 Aug 2010 21:14:09 +0900 (JST)
helo ABC.com
250 www.debian.ibaraki Hello ABC.com (localhost [127.0.0.1])
mail from: <yasuhara@ABC.com>
250 2.1.0 Sender <yasuhara@ABC.com> OK
rcpt to: <aaa@live.jp>
250 2.1.5 Recipient <aaa@live.jp> OK
data
354 Ok Send data ending with <CRLF>.<CRLF>
Subject: Hello James

This is test mail.
.
250 2.6.0 Message received
quit
apps/james/logs/smtpserver-2010-08-18-21-51.log
には、
18/08/10 21:58:15 INFO  smtpserver: Successfully spooled mail Mail1282136294541-1 from yasuhara@ABC.com on 127.0.0.1 for [aaa@live.jp]
となっているので、送信を受け付けたと理解していいでしょうか?
送信できない理由は、何と考えられるでしょうか?
ウイルスソフトが考えられるのでしょうか?
このサーバにインストールされているメーラー「iceDove」の使用で、外へのメールの送信は可能なので、ウイルスソフトの原因の可能性は無いと考えられますか?

一応、社内で使っているSMTPサーバの使用ポートか587なので、
config.xmlを
<smtpserver ><port>587
に書き換えて、
# telnet localhost 587
のパターンも試しましたが、宛先に届きません。

もちろん
このサーバのメールボックス宛の送信は可能です。(外への送信ができない)

沢山の?マークを書いて申し訳ないですが、
よろしくお願いします。
投稿:パブリック[yasuhara]/2010年 08月 18日 22時 20分 /更新:2010年 08月 18日 22時 21分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
竹形です。どうも。

私の本で対象としていたJamesはバージョンが古かったのでJames Mail Server 2.3.2 をダウンロードして試してみましたが、本書に記述した通りの操作でメールを送信することができました。環境は Windows 7 Home です。まずは、Windowsのマシンで試してみてください。この方法でメールが届かなければ、ネットワークの問題(ルータの設定等)かも知れません(Windows7にはtelnetが無いので、teratermなどのターミナルソフトを使ってください。改行コードはCR+LFにする必要があるようです)。

次に、Debian で標準のsmtpサーバを使って同じテストをしてみてください。この方法でメールが届かなければ、OSの設定に問題があるかも知れません。

ログに出力されている Successfully spooled というメッセージは、「メールがスプールされた」という意味です。jamesでは、var/mail/outgoing にスプール用のファイルが作られ、送信待ちの状態になります。メールの送信が完了すると、このファイルは消去されます。ネットワークの問題などでメールが送信できない場合は、ここにメールが残ったままの状態になります。

その他に考えられる原因は、送信先のサーバでSPAMに分類されてしまっていることです。この場合は、Windowsで送信してもDebianに標準のsmtpサーバで送信しても同じ結果になるはずです。

拙著ではセキュリティソフトが送信メールをブロックするかも知れないと書きましたが、これはWindowsを想定した話です。Debian等のLinuxにはおそらく該当しないと思います。

投稿:竹形 誠司[takegata]/2010年 08月 19日 12時 27分 /更新:2010年 08月 19日 12時 36分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
補足です。

iceDoveというのは、メールクライアントですね。「このマシンのクライアントでメールが送信できるかどうか」、と「このマシンのサーバでメールが送信できるかどうか」は別の問題です。iceDoveが別のマシン上のメールサーバを使ってメールを送信しているかも知れないからです。そのあたりも確認してみてください。
投稿:竹形 誠司[takegata]/2010年 08月 19日 12時 35分 /更新:2010年 08月 19日 12時 35分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様
ご回答・アドバイスありがとうございます。

会社のルータの設定、このサーバにSMTPサーバを立てての送信の方から試してみたいと思います。
投稿:パブリック[yasuhara]/2010年 08月 19日 14時 49分 /更新:2010年 08月 19日 14時 49分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様

ご指摘のとおり、まずはWindows (Vista HomePremi)にてテストをしました。
すると、下記の550エラーが出ました。
220 Green SMTP Server (JAMES SMTP Server 2.3.2) ready Sun, 22 Aug 2010 16:15:53
+0900 (JST)
helo ABC.com
250 Green Hello ABC.com (0:0:0:0:0:0:0:1 [0:0:0:0:0:0:0:1])
mail from: <yasuhara@ABC.com>
250 2.1.0 Sender <yasuhara@ABC.com> OK
rcpt to: <aaa@live.jp>
550 5.7.1 Requested action not taken: relaying denied
これは、ドメイン"ABC.com"のサーバがLANの外(別拠点)にあるからでしょうか?
転送が拒否されたということですよね。

LAN内から外へ送信される際、まず最初にプロバイダーのメールサーバと通信し、転送をするので、そのプロバイダーの情報を設定ファイルで指定する必要がいるという事でしょうか?

投稿:パブリック[yasuhara]/2010年 08月 22日 17時 05分 /更新:2010年 08月 22日 17時 05分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
下の部分を見ると分かるのですが、
helo ABC.com
250 Green Hello ABC.com (0:0:0:0:0:0:0:1 [0:0:0:0:0:0:0:1])
端末がIPv6を使っているようですね。config.xmlを修正して、serversに127.0.0.1を設定されていると思いますが、端末がこのIPアドレスを使ってくれないとrelaying deniedになってしまいます。

端末の設定でIPv4を使うようにしてみてください。上記の部分が次のようになるはずです。

helo ABC.com
250 Green Hello ABC.com (127.0.0.1 [127.0.0.1])
送信ホスト、受信ホストのうち、少なくとも1つがconfig の serversで指定されたものと同じでなければなりません。この制限を満たさない場合に relaying denied が発生します。

serversに0:0:0:0:0:0:0:1が登録できればいいのではないかと思うのですが、方法が分かりませんでした。

TeraTermはいろいろバージョンがあって、IPv4/IPv6の設定方法が良く分からないですね。
↓からダウンロードしたputty.exeにはIPv4だけを使うようにするオプションがありました。

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

投稿:竹形 誠司[takegata]/2010年 08月 22日 23時 29分 /更新:2010年 08月 22日 23時 30分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様

Vistaのipv6の設定を無効にして、再度コマンドプロンプトから送信テストを行いました。
220 Green SMTP Server (JAMES SMTP Server 2.3.2) ready Thu, 26 Aug 2010 19:24:05
+0900 (JST)
helo ABC.com
250 Green Hello ABC.com (127.0.0.1 [127.0.0.1])
mail from: <yasuhara@ABC.com>
250 2.1.0 Sender <yasuhara@ABC.com> OK
rcpt to: <aaa@live.jp>
250 2.1.5 Recipient <aaa@live.jp> OK
data
354 Ok Send data ending with <CRLF>.<CRLF>
Subject: Hello J by Vista

This is test.
.
250 2.6.0 Message received
quit
社内のゲートウェイのファイアウォールには、外へ出ていくパケットにはフィルタは掛けていませんし、
Vistaのファイアウォールも念の為、無効にしてあります。

config.xml
<smtpserver>の<port>587 にして、テスト送信も行いましたが、
var/mail/outgoing フォルダにメールが溜まる一方です。

アドバイス頂けますか?
追記
<dnsserver>127.0.0.1</dnsserver>
にしてあります。

投稿:パブリック[yasuhara]/2010年 08月 26日 19時 44分 /更新:2010年 08月 26日 19時 44分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
outgoingから出て行かないのは、送信先サーバのドメイン名が解決出来ていないのかも知れません。次のコマンドでメールサーバのドメイン名が解決できるかどうか試してみてください。
nslookup -type=mx example.ne.jp
nslookupは特定のサーバのIPアドレスを調べるときによく使われるコマンドですが、-type=mx のオプションを付けるとメールサーバのIPアドレスを検索することができます。
こんな感じです。
C:\Users\takegata>nslookup -type=mx ezweb.ne.jp
サーバー:  192.168.0.1
Address:  192.168.0.1

DNS request timed out.
    timeout was 2 seconds.
権限のない回答:
ezweb.ne.jp    MX preference = 10, mail exchanger = lsean.ezweb.ne.jp

lsean.ezweb.ne.jp      internet address = 222.15.69.195
投稿:竹形 誠司[takegata]/2010年 08月 26日 20時 45分 /更新:2010年 08月 28日 04時 58分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様

その通り、nslookupコマンドを試しましたが、
C:>nslookup -type=mx ABC.com
サーバー:  UnKnown
Address:  192.168.0.1

権限のない回答:
ABC.com  MX preference = 0, mail exchanger = mail.ABC.com

ABC.com  nameserver = dns.ABC.com
mail.ABC.com      internet address = xxx.xxx.xxx.xxx
名前解決はされているようです。

なお、このメールサーバのパスワード認証は、平文で行われます。
投稿:パブリック[yasuhara]/2010年 08月 30日 19時 48分 /更新:2010年 08月 30日 19時 58分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
うーむ、、そうですか。

送信先のメールサーバの25番ポートにtelnetで繋いでコマンドを入力することができるか試していただけますか?相手のサーバがJamesでない場合(ほとんどそうだと思いますが)は本書に書いた手順ではエラーになってしまうかもしれませんが、少なくともheloコマンドに対するプロンプトは出ると思います。動的IPを使っている場合は、接続が拒否されるか、heloコマンドでコネクションが切られてしまうことが多いようです。

最初のご質問にあった、「社内で使っているSMTPサーバ」というのは、同じネットワークの中にあるものなのでしょうか。そのサーバからはメールが送信できているということですよね?固定IPを使われているという前提でお話をお聞きしてきましたが、それはよろしいでしょうか?
投稿:竹形 誠司[takegata]/2010年 08月 31日 00時 22分 /更新:2010年 08月 31日 00時 24分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
補足です。

SMTPが使われる場所は「メールクライアントからメールサーバへの送信」と「メールサーバ間のメール転送」の2つがあります。このうち、587番ポートを使ったり、パスワード認証を使ったりするのは「メールクライアントからメールサーバへの送信」です。「メールサーバ間の転送」は25番ポート、認証なしで行われます。

投稿:竹形 誠司[takegata]/2010年 08月 31日 03時 28分 /更新:2010年 08月 31日 03時 28分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様

>送信先のメールサーバの25番ポートにtelnetで繋いでコマンドを入力することができるか試して
とは、下記のようにしましたが、
C:>telnet ABC.com 25
接続中: ABC.com...ホストへ接続できませんでした。 ポート番号 25: 接続に失敗
しました
接続失敗と理解して良いでしょか。

社内で使っているSMTPサーバ(mail.ABC.com)は、別拠点にあります。同じネットワークにはありません。
そして、固定IPは使っていません。
説明不足でした。すみません。

固定IPで接続すれば、違うネットワークにあるSMTPサーバへ接続成功しますか?
また、Jamesと同じサーバーにpostfixのようなsmtpサーバを立てて、テストした方が時間的に良さそうですか?
投稿:パブリック[yasuhara]/2010年 08月 31日 11時 20分 /更新:2010年 08月 31日 11時 25分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
telnetで25番ポートに接続できなければSMTPの転送もできないので、おそらくJamesでもpostfixでも結果は同じだと思います。動的IPでSMTPサーバに接続できない理由については「SMTP 動的IP」などで検索してみてください。

別の拠点にSMTPサーバがあって、そちらの拠点にもSMTPサーバを設置するのはどのような目的でしょうか?
投稿:竹形 誠司[takegata]/2010年 08月 31日 11時 48分 /更新:2010年 08月 31日 11時 48分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
固定IPを取得するまでに、時間的に長くかかるかと思いました。
そして、
『Jamesがインストールされたサーバに別のsmtpサーバを立てれば、Jamesから即接続できる。
そのsmtpサーバは、DDNSに登録すれば良いのか』と(?)思いまして。
投稿:パブリック[yasuhara]/2010年 08月 31日 12時 28分 /更新:2010年 08月 31日 12時 28分
RE:Jamesで外へ送信できない
by 竹形 誠司[takegata]
>固定IPを取得するまでに、時間的に長くかかるかと思いました。

固定IPを1つだけオプション(または基本サービス)で提供しているプロバイダが結構あります。1台のルータに複数のIPアドレスを設定するのは手続き的にも技術的にもかなりハードルが高いですが、IPアドレスが1つだけの場合は簡単です。当サイトではINTERLINKのZOOTというサービスを使っています。

>Jamesがインストールされたサーバに別のsmtpサーバを立てれば、Jamesから即接続できる。

これはどのようなことを仰っているのかちょっと分かりませんが、別の拠点にsmtpサーバがあるのであれば、そちらを使うのが得策かと思われます。

>そのsmtpサーバは、DDNSに登録すれば良いのか』と(?)思いまして。

確かに昔はDDNSでメールサーバを運用することもできたようですが、最近はSPAM対策として動的IPから25番ポートのリクエストを受け付けないように設定することが多いようです。私はこのあたりのことはあまり詳しくないので、ご興味があれば関連の書籍やサイトなどで調べてみてください。
投稿:竹形 誠司[takegata]/2010年 09月 01日 00時 31分 /更新:2010年 09月 01日 00時 32分
RE:Jamesで外へ送信できない
by パブリック[yasuhara]
竹形様

>Jamesがインストールされたサーバに別のsmtpサーバを立てれば、Jamesから即接続できる。
同じネットワークにあるsmtpサーバへは、Jamesから何も制約なしに、通信できる(あるいは通信可能にすることができる)と認識してしまいました。

想像を混ぜた書き込みをしてしまいました。
固定IPを取得して、自社smtpサーバを使用する方向で考えます。

アドバイス・お付き合い頂きましてありがとうございました。
投稿:パブリック[yasuhara]/2010年 09月 01日 09時 56分 /更新:2010年 09月 01日 09時 56分