こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

unixのmailコマンドにてメール送信

mailコマンドでローカル(LAN)以外のメールアカウントへメール送信は可能でしょうか?

cvsのcommitメールを飛ばそうと思うのですが、
うまくいきません。
ローカルにメールサーバをたてたくないので
直に外部のMTAに接続できれば と思います。
お願いいたします。

投稿日時 - 2004-10-17 03:01:43

QNo.1045131

すぐに回答ほしいです

質問者が選んだベストアンサー

編集不可ではなくて、「直接sendmail.cfを編集することは推奨しない」ではないでしょうか?

 sendmail.cfの編集の方法は、通常2種類あって、CFとcfがあります。古くはWIDE CFというものを使ってsendmail.defを編集し、これからsendmail.cfを生成していましたが、現在はsendmail.mcファイルを編集して、m4マクロを使ってsendmail.cfを生成します。Sunが言っているのはこういうことです。

 ただ、MTAとのことですので、デーモンモードで使用されるsendmail.cfでなくMTAで使用されるsubmit.cfが対象となるでしょう。

 Solarisのバージョン、Sendmailのバージョンともに不明ですのでなんですが、詳しくは以下のドキュメントを参考に...

参考URL:http://docs.sun.com/db/doc/817-1177

投稿日時 - 2004-10-17 19:31:52

お礼

回答ありがとうございます。
コマンドプロンプトより無事メールを送る事ができました。

なぜかcvsからは送れませんが、
もうすこしがんばってみます。

投稿日時 - 2004-10-17 20:07:50

このQ&Aは役に立ちましたか?

35人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.7

xjd

>でも、#6で書きましたが、solarisだとsubmit.cfは
>編集不可?みたいです。


「編集不可?」の意味が理解できませんが、
ちなみに、Linux ではsubmit.mcを修正したのち更新します。
sendmailデーモンを起動させる必要はありません。

FEATURE(`msp', `[127.0.0.1]', `MSA')dnl


# make submit.cf

投稿日時 - 2004-10-17 19:03:16

お礼

回答ありがとうございます。
$make 
がずっと不明でしたが、srcをdlしてきて
sendmail/cf/cf で make ですね。
これを理解できていませんでした。

目的であるメール送信は無事できました!!
$cat /etc/mail/submit.mc

divert(-1)
#
# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#

#
# This is a generic configuration file for SunOS 5.x (a.k.a. Solaris 2.x
# and Solaris 7 through the present version).
#
# It has support for local and SMTP mail only. If you want to
# customize it, copy it to a name appropriate for your environment
# and do the modifications there.
#

divert(0)dnl
VERSIONID(`$Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $')
OSTYPE(solaris2)dnl
DOMAIN(generic)dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`use_ct_file')dnl
MASQUERADE_AS(`hoge')dnl
MASQUERADE_DOMAIN(`localhost')dnl
EXPOSED_USER(`root')dnl
define(`confPRIVACY_FLAGS', `goaway')dnl
define(`SMART_HOST', `hoge.foo.hello.com')dnl
define(`ALIAS_FILE', `/etc/mail/aliases')dnl
MAILER(local)dnl
MAILER(smtp)dnl

 差出し人の名前やsubjectをつける方法を勉強します。

投稿日時 - 2004-10-17 19:46:25

ANo.6

Oct 15 19:34:22 hoge sendmail[2358]: [ID 702911 mail.alert] unable to qualify my own domain name (hoge) -- using short name
Oct 15 19:55:05 hoge sendmail[2395]: [ID 702911 mail.crit] My unqualified host name (hoge) unknown; sleeping for retry

 ログに上がっているエラーメッセージを一つ一つ解決していきましょう。

 まず、unable to qualify my own domain name は

$cat /etc/hosts
192.168.255.xxx hoge loghost

なので、当然です。Sendmailは自分のドメイン名を/etc/hostsファイルから引っ張ってきますので、

192.168.255.xxx hoge hoge.domainname loghost

と、hostname.domainname形式の別名エントリが必要です。

 sendmailをMTAとして使わずMUA/MSAとして使うのであれば、あとは#5さんがおっしゃるようにsendmail.cfの設定変更でいけそうな気がします。

投稿日時 - 2004-10-17 18:19:53

お礼

回答ありがとうございます。
ログにエラーはなくなりました。
あとはsubmit.cfですね。
docs.sunに変更はできない と記載があったのが
大変気になります。
http://docs.sun.com/db/doc/816-3965/6ma7896fr?l=ja&a=view

 submit.cfを作成する方法を少し勉強したいと思います。
solriasにはsubmit.mcは入っていなかったので
直接submit.cfを編集しなければいけないのでしょうか。
m4(1)は/usr/ccs/bin/m4に入っていました。
どこからかsubmit.mcを持ってきて編集 m4でcf変換
という手順であってますでしょうか?

投稿日時 - 2004-10-17 18:51:46

ANo.5

xjd

>ログを見るとローカルのsendmialをさしていますね。
>外部は無理ですか。。。非常に残念です。


Solarisではなく、Linuxのmailコマンドですが、外部のSMTPサーバを指定して
送信可能です。
ローカルでsendmailを起動させる必要はありません。

一度sendmail.cf / submit.cf あたりを見直してみてはいかがでしょう?

投稿日時 - 2004-10-17 17:41:37

お礼

回答ありがとうございます。
この場合sendmail.cfは編集する必要がなく
submit.cfだけでいけそうな気がします。

ソースが怪しいですが;
http://www.freia.jp/taka/wiki/SendMail

でも、#6で書きましたが、solarisだとsubmit.cfは
編集不可?みたいです。
sendmial.cfを編集したらsendmailが起動しなければいけない。。。なんてことはないですよね?

投稿日時 - 2004-10-17 18:54:54

ANo.4

 そのうまくいかないときのエラーメッセージがないとどこで失敗しているのかが想像がつきにくいですね。通常、この手のエラーメッセージはローカルのrootか、そのメールを飛ばしているアプリケーションのuidのユーザーに返ってきていると思いますので、それを確認してみてください。

 cvsについてはわからないのですが、それから外部メールアドレスを指定してメールを飛ばそうとしているのですよね?

一般的に以下のような条件が前提条件として必要かと思います。
・/etc/hostsファイルに自分のIP、ホスト名があるはずですが、ドメイン名を含んだエントリが存在すること。

ex)192.168.0.2 myhostname myhostname.mydomainname

・/etc/hostsファイルにSMTPサーバのIPアドレスがmailhostとしてエントリされていること。

ex)1.1.1.25 mailservername mailhost

・SMTPサーバの転送ポリシーを確認し、それに見合った設定になっていること。

 たとえば、SMTPサーバがドメイン名を確認しているなら、メール送信者がドメイン名を含んでいることが必要です。この場合、sendmail.cfの設定を変更します。

 いずれにせよ、そのエラーメッセージがないとなんともいえませんね。

投稿日時 - 2004-10-17 04:12:53

補足

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

/etc/hostsに自サーバの情報は書いてましたが
mailhostの記述はしていなかったので追加しました。

$cat /etc/hosts
#
# Internet host table
#
127.0.0.1 localhost
192.168.255.xxx hoge loghost
xxx.202.xxx.xxx hoge.foo.hello.ne.jp mailhost

$mail -s test foo@hoge.foo.hello.ne.jp

これでもうまくいきませんでした。
内部にsendmail等のMTAはたてていませんので
設定はないです。

投稿日時 - 2004-10-17 13:47:14

ANo.3

mailコマンドというのは、恐らくはいわゆる/bin/mailの事を指していると思いますが、このユーティリティは、ローカルでsendmailが稼働していることを暗黙に期待しているソフトであるため、そもそも外部のSMTPサーバを直接指定することが不可能です。

そのような事をする場合は、SMTPサーバを指定できる別のユーティリティを使用することになりますが、一般にUNIX上で動く多くのメール関連のユーティリティは、ローカルでsendmailが稼働していることを暗黙に期待しているため、質問者さんのような要件で困るケースが多いです。
私も以前に同じ事をしようとしてはまりました。
そのときには、そのようなことがあっさりとできるソフトが見つからなかったため、rubyを使って自前で作成してしまいました。

ご期待に添えず、申し訳ありませんが、事情が許すのであれば、メールサーバは動かしておいた方が、何かと悩まずにすむかと思います。

投稿日時 - 2004-10-17 03:30:21

補足

回答ありがとうございます。
mailは/bin/mailをさしています。おっしゃる通りです。
ログを見るとローカルのsendmialをさしていますね。
外部は無理ですか。。。非常に残念です。

rubyで自作ですか。
調べてみたところ、自作している方が多いように思えますね。
自作の方を試してみようかな、と思います。

投稿日時 - 2004-10-17 13:37:50

メールの送信だけに関して言えば、
mail メールアカウント
で、送信できると思います。

ただ、sylpheed、mozilla、thunder birdなどのメールソフトを使うほうが便利だと思いますが。

あと「うまくいきません。」のところのエラーログを見せてもらえば、もっと詳しい人から回答があるかも知れないと思いますので、載せてみればどうでしょうか。

私はCVSのことは一切知らないので、頓珍漢なことを書いていたらすいません。

投稿日時 - 2004-10-17 03:24:59

補足

回答ありがとうございます。
mailだけだとできないんですよ・・・
メールソフトはいれるつもりはないです。

ログは多分以下のものだと思います
$cat /var/log/message

Oct 15 19:34:22 hoge sendmail[2358]: [ID 702911 mail.alert] unable to qualify my own domain name (hoge) -- using short name
Oct 15 19:55:05 hoge sendmail[2395]: [ID 702911 mail.crit] My unqualified host name (hoge) unknown; sleeping for retry

hoge がhostnameです。
これってDNSが解決してくれるものだと思っているのですが・・・?

投稿日時 - 2004-10-17 13:35:10

ANo.1

こんばんは
リレー先のメールサーバが送信元のドメインをリレー許可していますか?
あなたのサーバはそのサーバに転送する設定が完了していますか?

取り敢えず試験として、telnetでそのサーバにPort25でログインし以下のコマンドを試してください。

helo サーバ名
mail from:送信元アドレス
rcpt to:送信先アドレス
data
.
test
.
quit

投稿日時 - 2004-10-17 03:11:09

補足

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

しかしながら、外部サービスのメールサービスの為
telnetはできないんです。

え~セキュリティと管理の問題よりメールは外部に委託しています。

ローカルにメールサーバをたてれたらその設定を色々やるのですが、できない状態です。
でもリレーは許可しているように思えます。

以前はローカルにMTA(送信のみ)をたてていた場合は
うまくいっていました。

言葉足らずで申し訳ございません。

投稿日時 - 2004-10-17 13:29:40

あなたにオススメの質問