質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

2回答

6324閲覧

シェルスクリプトでメールを送る際の複数宛先設定方法

yuuuuuutan

総合スコア1

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/08/07 13:45

質問内容 sendmailでの複数宛先の設定方法

linux環境のシェルスクリプトで cat mail.txt | sendmail -i -tでメールを送信する機能を作成。
mail.txtの宛先は以下のように設定しているが、複数宛先を設定する場合はどのように書いてよいか分からず、、
From:<xxxxxxxxxx.com>
To:xxxxxxxxxx@xxxx.com
Cc:xxxxxxxxxx@xxxx.com
検索してもmail.txt外出ししている例が少ないのか、見つかりません。
どうかご助力お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

普通に、To:に並べて書けばいいだけです。
何故疑問に思ったのでしょうか?複数人にメールを送ったことが無い??

投稿2020/08/07 14:30

otn

総合スコア84645

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hana_yama_san

2020/08/07 14:38 編集

いやいやいやいや。100人分書けますか? もちろんMajordomoとかを入れて設定しなくてもOKな範囲での話ですが。
otn

2020/08/07 16:25 編集

書けると思いますが?? Bccにすべきではないか?という検討は要りますが。
hana_yama_san

2020/08/07 22:52

Bcc云々と言うのは現実には重要ですが、ここでの問題とは関係ないかと・・ >>書けると思いますが?? それを簡単に書けるよぅにするというのは実質 メーリングリストを構築するのと同じでは無いでしょうか?
otn

2020/08/07 23:31

何が難しいと思っていますか??
CHERRY

2020/08/08 00:20

横からですが... 質問に書かれている「複数宛先を設定する場合はどのように書いてよいか分からず」という質問に、「大量の場合に簡単に書けるか」のような条件を追加するのであれば、質問にその内容を追記していただけませんか? コマンドラインの長さの制限値は、ARG_MAX で制限されていると思いますが、手元のbash では、131071 (約128KB) まで受け付けるようですので、100名ぐらいのメールアドレスなら(入力は面倒かもしれませんが)コマンドで処理できると思います。
hana_yama_san

2020/08/08 09:20

難しいとは思っていませんが、長い目で見ると面倒だと思っています。 私の想像力が貧困なのかもしれませんが、 「cat mail_list.txt | xargs mail ・・・・・」のようなものを想像しました。 テキストファイルをメンテするのより、長い目で見ればMLの方が簡単とまでは言いませんが、 同程度の面倒さは有ると思います。 >CHERRYさん >>ARG_MAX それは、そこそこのスペックのマシンなら、 「ulimit -S-s」で無問題ですし、そもそもxargsがあります。
otn

2020/08/08 11:10

この質問は、sendmail -i -t で送信するファイルを作る話なので、 コマンドラインは関係ないです。
hana_yama_san

2020/08/08 12:59

質問者の提示したコマンドが絶対条件なのですか? 違うアプローチを提言するのも、立派な回答と思いますが。
yuuuuuutan

2020/08/10 11:49

いろいろご指摘ありがとうございます、自分の書き方が悪かったのですが、toに複数宛先書く際にどのように区切ればい良いか分かりませんでした。; や,等でやってみたのですが上手く複数のアドレスとして認識されません。
otn

2020/08/10 12:30

区切りはカンマです。 To: aaa@xxx, bbb@yyy とかです。 Outlookみたいなのを使ってると間違って覚えちゃいますよね。
hana_yama_san

2020/08/12 11:44

シェルスクリプトの質問で「列挙すれば良いだけ」 と言いながら、区切りがIFSじゃなくてカンマだというのは 後出しジャンケンなのでは? また某M$の製品を好きと言う事は全然無く擁護する気は毛頭無いですが、 メールアドレスを「;」セミコロンで区切るのはどう間違いなのですか? よく解らないので、ご教示頂けると幸いです。
otn

2020/08/12 12:23

シェルスクリプトでメールを送る際の、送るメールファイルmail.txtの中にアドレスをどう書けばいいかという話なので、そのファイルを手でエディタで作るのか、シェルスクリプトで作るのか、Python等で作るのかとかは、質問の範囲外です。 > メールアドレスを「;」セミコロンで区切るのはどう間違いなのですか? インターネットメールの宛先等のアドレスリストはカンマで区切ることになっているからです。 規格で決まっています。
hana_yama_san

2020/08/12 13:08

>>シェルスクリプトでメールを送る際の複数宛先設定方法 これを質問の範囲外というのは強引だと思います、 極言すれば自作スクリプトで"hoge"区切りでもOKになります。 シェルスクリプトという以上IFSに従うべきです。 >>規格で決まっています。 そうですか、その規格がRFCなのかなんなのか明記しないのは 相手をめくらます意図しか感じられません。 煙に巻いて楽しいですか? 又なぜ多くのユーザを抱えているM$が何で企画にしたがっていないのかの 考察も不十分です。ま、(しるか!)と言っても無問題といえば、そうなのですが。
dameo

2020/08/12 13:11

上に上げたRFC5322ですよ BNF見たけど私の知識ではGroupの意味が分からず混乱しかしなかったのでそっ閉じしました
hana_yama_san

2020/08/12 13:23

RFC5322は書いてあるようにインターネットメッセージの型式を定義する物であり、 OSとコマンドラインを仲介するシェルの文法を定義する物では有りません。
dameo

2020/08/12 13:25

そうなんですね。私はいずれにしても分からないのでこの辺で。
Zuishin

2020/08/12 13:35 編集

sendmail -t だと標準入力から宛先を読むのでシェルの文法こそ関係ないのでは?
otn

2020/08/12 14:08 編集

RFCという言葉をご存じかどうか分からなかったので、RFCという言葉を出しませんでした。 Request for Commentなので、「規格じゃないじゃないか」と言われると説明が面倒。 ご存じで良かったです。RFC822→2822までは覚えていますが、最新は、 > 上に上げたRFC5322ですよ とのことです。 Outlookは本来はExchangeというグループウェアのクライアントで、Echangeメールが何からの理由でセミコロンを採用したのでしょう。「何らかの理由」まではちょっと分かりません。少なくとも現在はカンマも受け入れてセミコロンに変換します。Exchangeサーバーにインターネットメールとの連携が入ったのはかなり後だったはずです。 ExchangeじゃなくてOutlook自体は、インターネットメールの読み書き機能も最初もしくは早期からあったと思いますが、あくまでメインはExchangeクライアントなので、相性が良くないです。今勤務先でOutlook使っているので困ってます。 >> シェルスクリプトでメールを送る際の複数宛先設定方法 >これを質問の範囲外というのは強引だと思います、 言ってません。mail.txtをどういう手段で作るかが範囲外です。 > BNF見たけど私の知識ではGroupの意味が分からず混乱しかしなかったのでそっ閉じしました すでに化石のような機能です。 To: Friends:foo@example.com,bar@example.jp; と書いておくと、foo@example.com,bar@example.jp宛てにメールを送るが、本文のTo:は、 To: Friends:; のように書き換えて送るという機能だったはずですが、多分今の多くのメールソフトは対応していない気がします(未確認)。 少し確認すると、Windows用Becky!だとメールは送れるが書き換えはしない。ウェブ版Gmailだと宛先として受け付けてくれない。MHというコマンドラインベースの古いメールソフトだと書き換えまで対応しています。
otn

2020/08/12 14:06

> OSとコマンドラインを仲介するシェルの文法を定義する物では有りません。 それは、今回の質問と関係ないですね。今回は、mail.txtの中の書き方の質問ですので、RFC5322が関係します。 コマンドラインの話がしたければ、ご自分で新たに質問されては?
dameo

2020/08/12 14:14

@otnさん ありがとうございます!勉強になります!
guest

0

投稿2020/08/07 13:56

hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/08/12 13:45

質問は送信について聞いていますが、リンク先に送信についての記述が見当たりません。どういう意図ですか?
hana_yama_san

2020/08/12 21:22

意図的にあるアドレスに受信させる事で、あらかじめ決めた多数のアドレス当てに送信できる機能が有りますよ・・ と言う話です。
Zuishin

2020/08/12 22:10 編集

> 複数のメールアドレスに転送したい場合は、hoge@fuga.com,foo@bar.ac.jp とカンマで区切ることで記述できる。 これのことですか? > いやいやいやいや。100人分書けますか? と言われた sendmail とどう違うのかわかりませんが、手順が余計にややこしくなっただけで、特にメリットがない気がします。変なヘッダもつくだろうし、うっかり対策を忘れたら外部から悪用される可能性もありますね。
hana_yama_san

2020/08/13 14:32

そうですか、まだまだ流用性はあるとは思っていますが、 ここは一旦矛は収めます。 但し、 >>sendmail とどう違うのか そもそも今更sendmailってmailer.confで 置き換えて使わないですか(実は職場の一部サーバでは置き換えてないが) 自分としては便利だと思ったまでの事で、 確かにヘッダは付くでしょう。 しかしその悪用までは想像出来ませんので、 具体的な実例や検証結果・・ とは言わないまでも、メカニズムを ご教示願います。
Zuishin

2020/08/13 14:34

どう違うのかはそういうことじゃなくて、同じフォーマットでしょって話ですが。
Zuishin

2020/08/13 14:37

それにあなた以外誰も転送の話などしていません。sendmailは送信コマンドとして使っています。わざわざ転送する手間をかける意味がありません。メールをそのまま sendmail に食わせたら送ってくれるんですよ。cat って書いてあるでしょう?
hana_yama_san

2020/08/13 14:45

>>ここは一旦矛は収めます。 と書きましたが無視ですか?
Zuishin

2020/08/13 14:47

収めてないので。収めると言うなら実際に収めてくださいな。
hana_yama_san

2020/08/13 15:02

procmailや,forward等の効用について、 他者と比較して実用的であるという事に関して 「矛を収めます」 sendmailコマンドについては、 いにしえのsendmailが全てって訳じゃ無いんだよ、 と言うことには「それはそうでした、すみません」 と言います。 さて、「メカニズムをご教示願います。」の 回答をお待ちしております。
Zuishin

2020/08/13 15:03

悪用の仕方を教えろと?
hana_yama_san

2020/08/13 15:34

メカニズムです。 悪用防止法としても有用です。
Zuishin

2020/08/13 15:38

色々考えられますが、 > うっかり対策を忘れたら外部から悪用される可能性もありますね。 から想像できませんか? TO にメールアドレスがずらずら並んだメールをリモートから送信できるとしたらまずいと思いませんか?
Zuishin

2020/08/13 15:41 編集

防止法なら次の方法が有効でしょう。 メールの振り分けを使って送信せず、ローカルでログインしないと送信できなくする。つまり procmail とレシピをこの目的に使用しない。
hana_yama_san

2020/08/13 15:58

それはメカニズムではなくポリシーとワークアラウンドです。
Zuishin

2020/08/13 22:40 編集

防止法が知りたかったのでは? それに応急処置ではなく procmail での無駄な振り分けをやめることは、それを使用することによって可能となる悪用への根本的解決であり、ワークアラウンドではありません。 あと、「収める」ではなく「話をそらします」と言葉を正しく使いましょう。 「メカニズム」にしても意味が曖昧です。「無用な作業を導入しない」も「ポリシー」とわざわざ言うには当たり前すぎる行為です。 いずれにしてもこの質問とは無関係(振り分けを使うことはあなた以外誰も想定していないので)な逸脱した質問なので不適切ですが、それでもなお続けますか? それとも「収め」ますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問