• ベストアンサー

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

mailコマンドでローカル(LAN)以外のメールアカウントへメール送信は可能でしょうか? cvsのcommitメールを飛ばそうと思うのですが、 うまくいきません。 ローカルにメールサーバをたてたくないので 直に外部のMTAに接続できれば と思います。 お願いいたします。

  • jyunk
  • お礼率43% (16/37)

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

  • ベストアンサー
noname#9381
noname#9381
回答No.8

編集不可ではなくて、「直接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
jyunk
質問者

お礼

回答ありがとうございます。 コマンドプロンプトより無事メールを送る事ができました。 なぜかcvsからは送れませんが、 もうすこしがんばってみます。

その他の回答 (7)

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.7

>でも、#6で書きましたが、solarisだとsubmit.cfは >編集不可?みたいです。 「編集不可?」の意味が理解できませんが、 ちなみに、Linux ではsubmit.mcを修正したのち更新します。 sendmailデーモンを起動させる必要はありません。 FEATURE(`msp', `[127.0.0.1]', `MSA')dnl # make submit.cf

jyunk
質問者

お礼

回答ありがとうございます。 $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をつける方法を勉強します。

noname#9381
noname#9381
回答No.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の設定変更でいけそうな気がします。

jyunk
質問者

お礼

回答ありがとうございます。 ログにエラーはなくなりました。 あとは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変換 という手順であってますでしょうか?

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.5

>ログを見るとローカルのsendmialをさしていますね。 >外部は無理ですか。。。非常に残念です。 Solarisではなく、Linuxのmailコマンドですが、外部のSMTPサーバを指定して 送信可能です。 ローカルでsendmailを起動させる必要はありません。 一度sendmail.cf / submit.cf あたりを見直してみてはいかがでしょう?

jyunk
質問者

お礼

回答ありがとうございます。 この場合sendmail.cfは編集する必要がなく submit.cfだけでいけそうな気がします。 ソースが怪しいですが; http://www.freia.jp/taka/wiki/SendMail でも、#6で書きましたが、solarisだとsubmit.cfは 編集不可?みたいです。 sendmial.cfを編集したらsendmailが起動しなければいけない。。。なんてことはないですよね?

noname#9381
noname#9381
回答No.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の設定を変更します。  いずれにせよ、そのエラーメッセージがないとなんともいえませんね。

jyunk
質問者

補足

回答ありがとうございます。 /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はたてていませんので 設定はないです。

  • you-m
  • ベストアンサー率58% (190/327)
回答No.3

mailコマンドというのは、恐らくはいわゆる/bin/mailの事を指していると思いますが、このユーティリティは、ローカルでsendmailが稼働していることを暗黙に期待しているソフトであるため、そもそも外部のSMTPサーバを直接指定することが不可能です。 そのような事をする場合は、SMTPサーバを指定できる別のユーティリティを使用することになりますが、一般にUNIX上で動く多くのメール関連のユーティリティは、ローカルでsendmailが稼働していることを暗黙に期待しているため、質問者さんのような要件で困るケースが多いです。 私も以前に同じ事をしようとしてはまりました。 そのときには、そのようなことがあっさりとできるソフトが見つからなかったため、rubyを使って自前で作成してしまいました。 ご期待に添えず、申し訳ありませんが、事情が許すのであれば、メールサーバは動かしておいた方が、何かと悩まずにすむかと思います。

jyunk
質問者

補足

回答ありがとうございます。 mailは/bin/mailをさしています。おっしゃる通りです。 ログを見るとローカルのsendmialをさしていますね。 外部は無理ですか。。。非常に残念です。 rubyで自作ですか。 調べてみたところ、自作している方が多いように思えますね。 自作の方を試してみようかな、と思います。

回答No.2

メールの送信だけに関して言えば、 mail メールアカウント で、送信できると思います。 ただ、sylpheed、mozilla、thunder birdなどのメールソフトを使うほうが便利だと思いますが。 あと「うまくいきません。」のところのエラーログを見せてもらえば、もっと詳しい人から回答があるかも知れないと思いますので、載せてみればどうでしょうか。 私はCVSのことは一切知らないので、頓珍漢なことを書いていたらすいません。

jyunk
質問者

補足

回答ありがとうございます。 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が解決してくれるものだと思っているのですが・・・?

  • kuma-ku
  • ベストアンサー率54% (1558/2845)
回答No.1

こんばんは リレー先のメールサーバが送信元のドメインをリレー許可していますか? あなたのサーバはそのサーバに転送する設定が完了していますか? 取り敢えず試験として、telnetでそのサーバにPort25でログインし以下のコマンドを試してください。 helo サーバ名 mail from:送信元アドレス rcpt to:送信先アドレス data . test . quit

jyunk
質問者

補足

回答ありがとうございます。 しかしながら、外部サービスのメールサービスの為 telnetはできないんです。 え~セキュリティと管理の問題よりメールは外部に委託しています。 ローカルにメールサーバをたてれたらその設定を色々やるのですが、できない状態です。 でもリレーは許可しているように思えます。 以前はローカルにMTA(送信のみ)をたてていた場合は うまくいっていました。 言葉足らずで申し訳ございません。

関連するQ&A

  • メールの送信

    mail コマンドからメールが送れるのは、sendmail が使われているのでしょうか?それとも mail コマンドが単独でメールを送っているのでしょうか? ただいま、管理人にメールが送れるウェブサーバーを立てたいと思っていますが、MTA を使わずにメールを送信できるのなら、使わずにメールを送信できるようにしたいです。PHP を使ってメールを送信する予定です。しかし、PHP を使ってメールの送信が出来ません。mail コマンドで送信できたので、PHP でも送信できそうな気がしたのですが。 やはり mail コマンドも sendmail を使っているのでしょうか?その場合、sendmail のパスは、/usr/libexec/sendmail/sendmail で合っていますでしょうか? /etc/mail/mailer.conf を見て、実際見に行ったら sendmail があるようですが、パスをそのように指定しても、メールが送信されません。 環境は FreeBSD5.0R です

  • VPSメールサーバ送信できない

    ローカル環境でメールサーバを立てるとうまくいきましたので、本番のVPSに立ててみましたがうまくいきません。 ドメインはムームードメインを使用し、さくらのDNSを参照するようにしています。 メールアカウントの設定も通りません。ですがtelnet でログインできることは確認済みです。 内部から内部へは送れれます。外部の設定がまずいのでしょうか。MXレコード等。telnetコマンドでは送信も受信も外部からも外部へもできます。 しかし、メールクライアントだと送信時にタイムアウトしてしまいます。 あと、mail.[ドメイン名]で設定もできません。サーバーのアドレスを直打ちです。 ポートは25・110解放済みです 送信ができないのかnologin userでアカウントの設定ができないのか3点教えていただけないでしょうか。よろしくお願いします。 ゾーン エントリ名 タイプ データ @ NS ns1..... NS ns2..... A サーバーアドレス     MX   10 @ www CNAME @ mail CNAME @ ftp CNAME @

  • mailコマンドのSMTPサーバー

    お世話になっております。 mailコマンドを使ってメールを送るスクリプトを書いています。 #mail -s "subject" mail@mail.com みたいな感じです。 ローカルにはMTAを立てたくないので、他のサーバーをSMTPサーバーとして送りたいのですが、どのようにすればよろしいでしょうか? とりあえずPostfix、Sendmailのパッケージ自体はサーバー上に乗っていますがサービスとしては立ち上げていません。OSはCentOS 4.6です。 以上、どうぞよろしくお願い致します。

  • 任意ポート番号にメール送信(UNIX)

    タイトルのとおりなのですが、指定したポート番号(25番以外)にメールを送信するにはどうすればよいのでしょうか? 通常は25番ポート(SMTPサーバ)を通ってメールは送信されますよね? 25番ポートを指定すれば普通に送信できるのですが、ポート番号を20000とか少しでも変えてしまうと、エラーになり送信することができません。 ちなみに、ソケットを用いてSMTPコマンドをプログラムに打たせてます。 SMTPコマンドなので、25番(SMTPサーバ)以外では使えないというか、解釈できないのでしょうか? もし、そうであるなら、任意のサーバでもSMTPコマンドを解釈できるようにするにどのようにすればよいのでしょうか? 時間があるときでよろしいので、教えて頂けると幸いです。

    • ベストアンサー
    • Perl
  • sendmailコマンドでの送信についてよろしくお願いいたします。

    sendmailコマンドでの送信についてよろしくお願いいたします。 現在、次の環境にてメールサーバーの作成をしています。 OS   [CentOS 5] メール [postfix] このような、メールサーバの作成(転送設定)で、Thunderbirdといわ れます、メールソフトからのメールの送信は可能になったのですが、 sendmailコマンドでの送信が出来なくて困っています。 よろしければ、原因や問題を、教えて頂けましたらと思っています。 よろしくお願いいたします。 (現在の状況では次のようになっております。) ・メールサーバーには、(main.cf)ファイルに、 relayhost = [SMTPサーバー] を記述して、転送の設定をしています。 ・また、  smtp_sasl_password_maps = hash:/etc/postfix/isp_account  の記述と、(isp_account)ファイルの中には、  [SMTPサーバー]:25 ユーザー名:パスワード  の作成をしています。 ※telnet localhost 25 で入りましての送信は行えています。

  • メールサーバ構築 メールソフトから送信出来ません

     自宅サーバ+sendmail+Dovecotでメールサーバの構築をしようとしています。 http://www.fmmc.or.jp/fm/nwts/rh_linux/ch3/3_2_2_3.html  などを見て一通りの設定を行い、特に気になるエラーもなかったのですが、動きません。  メールソフトからそのドメインのアカウントのメールは受信出来るのですが、送信しようとすると「smtpサーバに接続出来ませんでした」とエラーが出ます。  また、telnetでそのドメインの25番ポートへの接続も出来ません(110番ポートには接続出来ます)。ドメインをipアドレスに変えても接続出来ません。  sendmail.mcの DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl  はコメントアウトしております。  SSHでメールサーバに接続後、sendmailコマンドでテストメールを打った場合は、外部サーバにも、内部サーバにも、メールの送信が出来ます(sendmailはちゃんと動いているということですよね?)。  プロバイダのメールアカウントから、そのメールアドレスに宛てて送信すると送信出来、エラーメールも返って来ないのですが、サーバ上のユーザーメールボックスにはメールは届いていません(どこに行ったの?)。  外部からのメールが届かないことから、DNSのMXレコードの設定がおかしいのかな?と思ったのですが、それにしては受信が出来ているのが気になります。また、外部からipアドレスで繋ごうとしても繋がらないのも気になります。  MXレコードは、ゾーンレコードを管理出来る無料ドメインのサービス(co.cc)で設定していますが、設定フォームの項目が固定の部分もあり、入れれるものを入れた感があり、自信がありません  Host:ドメイン名(ipアドレスの入力が出来ない)  Type:MX  Value:ドメイン名(ipアドレスの入力が出来ない)  サーバは1台なので、smtpサーバもpopサーバも同じでドメイン名での運用になるので、サーバ内でのDNSレコードは追加しなくて良いという認識でよいでしょうか?(pop.ドメイン などとならないので)    どの項目をどの方法で確認して、問題点の絞込みをしていいかさえ分からず、質問させていただきます。  お目汚しですが、お気づきの点・確認方法・参考サイトなどあればご教示いただけないでしょうか?

  • EentOSでのメール送信について

    お世話になっております。 CentOS5.5をインストールしました。 mailコマンドでroot等のローカルのユーザーにはメールの送信ができるのですが、 外部のメールアドレスにメールを送信することができません。 どのような設定を行えばメールを送信できるようになるのでしょうか? 受信と転送の必要はなく、送信だけできればいい常態です。 よろしくお願いします。

  • ローカルサーバよりメール送信の方法

    ローカルサーバよりメール送信の方法 ローカル環境にLINUXサーバーがあります。(Sendmailインストール済み) これより、外部にメールを送信することは可能なのでしょうか? いろいろと調べたところ出来るとはとはおもうのですが、設定の方法がわかりません。 よろしくお願いいたします。

  • メール送信のみできません

    ここ2~3日、突然メールの送信ができなくなりました。 Outlook Expressで送信のみができず、 「サーバーへの接続は失敗しました。 アカウント :××,  サーバー :××」というメッセージがでます。 受信はできます。 どう対処したらよいでしょうか。 よろしくおねがいします。

  • teratermで多段ログインのコマンド

    質問者は質問内容をどう表現していいのかよくわかっていません。 社内のサーバAとBがあり、外部のwebサーバCがあるとします。teratermを用いてCのDBへファイルをアップロードしたり、BのCVSからファイルの更新を行いたいと思っています。しかし、それをAへログインして行うような感じなのです。どのようにしてAからCへアクセスして、またCVSがBにあることをCに教えて、ファイルの更新をしたらよいのでしょうか。 コマンドを覚えればいいのか、なんらかの環境変数の設定など、他にもやることがあるのか、さっぱりわかりません。 ローカルのPCはwindows2000でサーバはlinuxです。Aへのログインはできていて、Cのアカウントも作ってもらっているはずですが、どうやってアクセスしていいかわからないので確認できていません。 だれか助けてください。よろしくお願いします。