Unix「メール」の「差出人」アドレスを変更する


88

Unixコマンドラインからメッセージを送信すると、からmail TO_ADDR電子メールが送信され$USER@$HOSTNAMEます。によって挿入された「From:」アドレスを変更する方法はありmailますか?

参考までに、私はUbuntuでGNU Mailutils 1.1 / 1.2を使用しています(ただし、FedoraとRHELで同じ動作を確認しました)。

[編集]

$ mail -s chris@example.orgのテスト                                                                  
Cc: 
差出人:foo@bar.org

テスト中
。

収量

件名:テスト
宛先:<chris@example.org>
X-Mailer:メール(GNU Mailutils 1.1)
メッセージID:<E1KdTJj-00025z-RK @ localhost>
差出人:<chris @ localhost>
日付:2008年9月10日水曜日13:17:23 -0400

差出人:foo@bar.org

テスト中

"From:foo@bar.org"行は、ヘッダーの一部ではなく、メッセージ本文の一部です。


1
これはUnixのどんな味ですか?そして、どのメールバージョン?それが機能しない場所を知るためだけに。
Vinko Vrsalovic

ええと、ほとんどすべて。mailxやberkeley mailを使用している人はだれでもそれをそのように見るでしょう。ヘッダーに影響を与えたい場合は、ヘッダー全体を記述し、rmailまたはsendmailで直接送信します。
Thomas Kammeyer、

あ、でも申​​し訳ありませんが、Gentooを実行しています。
Thomas Kammeyer

参考までに、私はmailxを使用しており、Chrisが作成した例を使用しています。それとも、それはあなたが意味したことですか?
Vinko Vrsalovic 2008

Vinko、UN * Xのどのバージョンを実行していますか?「機能する」とは、彼の結果が得られるということですか、それとも彼のニーズに応える望ましい振る舞いが得られるということですか?それは、ある程度、メッセージ送信がプラットフォームでどのように機能するか、およびクライアントがその前に空白行を追加するかどうかに依存します
Thomas Kammeyer

回答:


106

私のバージョンのメール(Debian linux 4.0)では、次のオプションがソース/返信アドレスを制御するために機能します

  • 追加のヘッダーを適用するための-aスイッチ。送信メールヘッダーに追加されるFrom:ヘッダーをコマンドラインで指定します。
  • $ REPLYTOのヘッダ:環境変数は、返信先を指定します

したがって、次のシーケンス

export REPLYTO=cms-replies@example.com
mail -aFrom:cms-sends@example.com -s 'Testing'

私のメールクライアントでの結果は、cms-sends @ example.comからのメールで、返信先のデフォルトはcms-replies@example.comです。

注意: Mac OSユーザー:-aはありませんが、$ REPLYTOはあります

NB(2): CentOSのユーザー、多くのコメンターは、あなたが使用する必要があることを追加している-rではありません-a

NB(3):この回答は10年以上前のものです(1)。Googleからアクセスする場合は、このことを覚えておいてください。


ここでもう一度テストして確認しましたが、問題なく動作しました。すべてのメールクライアントがReply-Toでうまく機能するわけではありませんが、これで問題が解決したと思っていました。REPLYTO env変数はmanページに記載されています。他のUNIXメーラーはそれを尊重します。emacsなど。それでも、修正はあると思います。
cms

メールクライアントだとは思わない...生のメッセージテキストにReply-Toヘッダーが表示されない。しかし、そう、-aで十分です。
Chris Conway、

1
いいえ、ありません。しかし、「ライセンス上の理由により、完全なGNU mailutilsマニュアルはDebianシステムでは利用できません。」-aReply-To:...機能します。
Chris Conway、


4
CentOSでは、このmail -aオプションは「attachemnet」を意味します。私が使用するために必要な-rようにmail -r from@whatever.com
equivalent8

42

Centos 5.3では、次のことができます。

mail -s "Subject" user@address.com -- -f from@address.com < body

2つのダッシュは、メールが-f引数を解析しないようにし、それをsendmail自体に渡します。


2
動作しません。3つのアドレスがアドレスに追加されます。toアドレス、fアドレス、
ローカルドメイン

2
これは機能していましたが、最近のアップデート以降、機能しなくなりました。
Wil

1
CentOS 6.3では動作しません。-rフラグを使用して、以下の@ ubuntu-fanboyの回答を試してください。
スカイテイカー

26

GNU mailutilsの 'mail'コマンドでは、これを行うことはできません(少なくとも簡単に)。しかし、 'heirloom-mailx'をインストールする場合、そのメールコマンド(mailx)には、デフォルトの '$ USER @ $ HOSTNAME' fromフィールドを上書きする '-r'オプションがあります。

echo "Hello there" | mail -s "testing" -r sender@company.com recipient@company.com

「mailx」では機能しますが、「mail」では機能しません。

$ ls -l / usr / bin / mail
lrwxrwxrwx 1ルートルート22 2010-12-23 08:33 / usr / bin / mail-> / etc / alternatives / mail
$ ls -l / etc / alternatives / mail
lrwxrwxrwx 1ルートルート23 2010-12-23 08:33 / etc / alternatives / mail-> / usr / bin / heirloom-mailx

5
mailUbuntu 14.04 LTSにプリインストールされているGNU mailutils コマンドが-rオプションをサポートしているので、送信者アドレスを簡単に設定できるので便利かもしれません。
gerlos、2015年

私はDebian 9.11でテストしましたが、オプションも機能します。
Fedir RYKHTIK

14
mail -s "$(echo -e "This is the subject\nFrom: Paula <johny@paula.com>\n
Reply-to: 1232564@yourserver.com\nContent-Type: text/html\n")" 
milas.josh@gmail.com < htmlFileMessage.txt

上記が私の解決策です.... fromの直後と返信の前に余分なヘッダーを追加できます...追加する前にヘッダーの構文を知っていることを確認してください....これは私にとって完璧に機能しました


1
これはあなたの例で私のために働いています。メールアドレスの件名などを変更すると、すべてのヘッダーが表示されますか?
bsmoo 2013


5

Fromの名前とFromのアドレスの両方を次のように設定することもできます。

 echo test | mail -s "test" example@example.com -- -F'Some Name<example2@example.com>' -t

何らかの理由で渡され-F'Some Name'-fexample2@example.com機能しませんが、-tsendmailに渡すと機能し、「簡単」です。


4

ここにいくつかのオプションがあります:

  • 十分な特権がある場合は、sendmailを構成して、genericsテーブルで書き換えを行います。

  • ヘッダー全体を自分で書き込む(または自分宛にメールで送信し、すべてのヘッダーを含むメッセージ全体を保存して再編集し、コマンドラインからrmailで送信する)

  • sendmailで直接送信し、「-f」コマンドラインフラグを使用し、メッセージに「From:」行を含めない

これらはすべて同じではありませんが、詳細については、お客様にお任せします。

私のポータブルでは、送信メールサーバーのクライアントとして認証するsendmailを使用しており、ジェネリックを使用して返信メールを別のアカウントに送信します。それは魅力のように働きます。受信メールをfetchmailで集約します。


4

上記のすべての回答からこれを導き出しました。それぞれを試しても何もうまくいきませんでした。上記のすべての答えを組み合わせることで、多くの試行錯誤を繰り返し、これで結論を出しました。これでうまくいくかどうかはわかりませんが、Ununtu 12.04とRHEL 5.4ではうまくいきました。

echo "This is the body of the mail" | mail -s 'This is the subject' '<receiver-id1@email.com>,<receiver-id2@email.com>' -- -F '<SenderName>' -f '<from-id@email.com>'

任意の数の受信者IDを追加することで、任意の数の人にメールを送信でき、メールはSenderNameからfrom-id@email.comから送信されます

お役に立てれば。


これは/ usr / bin / mailでは機能しません。おそらく、コマンドはsendmail用です。
basZero

3

他のOSと同じかどうかはわかりませんが、OpenBSDでは、mailコマンドの構文は次のとおりです。

mail to-addr ... -sendmail-options ...

sendmailには-Fオプションがあり、FROM:フィールドに電子メールアドレスを指定します。次のコマンドでうまくいきます。

mail recepient@example.com -f from@example.com

私のために働く!(openBSD-Macbook proも。)
Aeonaut

1
更新-電子メールの受信者には、以前にも私のローカルアカウント名が表示されますfrom@example.com-たとえば、「Aeonaut from@example.com」。これを変更する方法はありますか?
宇宙飛行士、2012年

3
私にはうまくいきません。(os xマウンテンライオン)「メール:-fと送信先を指定できません。」
ジョニー2013年

3

ありがとうBEAU

mail -s "Subject" user@address.com -- -f from@address.com

私はこれを見つけただけで、うまくいきました。CentOS 5のメール8.1のマニュアルページでは、これについては触れられていません。-fオプションについては、マニュアルページは言う:

-fシステムメールボックスではなく、fileオペランドで指定されたファイルからメッセージを読み取ります。(フォルダーも参照。)fileオペランドが指定されていない場合は、システムメールボックスではなくmboxからメッセージを読み取ります。

とにかく、これは見つけるのに最適です、ありがとう。


1
-fもちろん、mail前にが付いているため、この例ではオプションではありません--。このオプションはMTAに渡されます
Anthon

3

Debian 7では、この質問の回答を使用して送信者アドレスを正しく設定することはできませんでした(常にサーバーのホスト名になります)が、この方法で解決しました。

heirloom-mailxをインストールする

apt-get install heirloom-mailx

それがデフォルトであることを確認してください。

update-alternatives --config mailx

メッセージを作成します。

mail -s "Testing from & replyto" -r "sender <sender@example.com>" -S replyto="sender@example.com" recipient@example.net < <(echo "Test message")

このupdate-alternativesコマンドは何をしていますか?それは私に3つの選択肢を与え、私は困惑しています。
ステファン


1

echo "body" | mail -S from=address@foo.com "Hello"

-Sを使用すると、ヘッダーなどを変更する最も簡単な方法で、多くの文字列オプションを指定できます。


1

エコー "テスト" | mailx -r fake@example.com -s 'test' email@example.com

OpenBSDで動作します。


0

これは私のために働いた

echo "hi root"|mail -rsawrub@testingdomain.org -s'testinggg' root

0

CentOS 5.5では、ドメインからデフォルトを設定する最も簡単な方法は、hostsファイルを変更することです。hostsファイルにWAN /パブリックIPアドレスが含まれている場合は、リストされている最初のホスト名を変更するだけです。たとえば、hostsファイルは次のようになります。

...
11.22.33.44 localhost default-domain whatever-else.com
...

それをwhatever-else.comから送信させるには、whatever-else.comが最初にリストされるように変更するだけです、例えば:

...
11.22.33.44 whatever-else.com localhostのデフォルトドメイン
...

他のディストリビューション(またはCentOSのバージョン)について話すことはできませんが、私の特定のケースでは、上記は完全に機能します。


0

何が私はカスタム返信先アドレス上を持たせUbuntu 16.04UTF-8符号化し、添付ファイル:

メールクライアントをインストールします。

sudo apt-get install heirloom-mailx

SMTP構成を編集します。

sudo vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.gmail.com:587
FromLineOverride=YES
AuthUser=???@gmail.com
AuthPass=???
UseSTARTTLS=YES

メールを送信します。

sender='send@domain.com'
recipient='recipient@domain.com'
zipfile="results/file.zip"
today=`date +\%d-\%m-\%Y`
mailSubject='My subject on the '$today
read -r -d '' mailBody << EOM
Find attached the zip file.

Regards,
EOM
mail -s "$mailSubject" -r "Name <$sender>" -S replyto="$sender" -a $zipfile $recipient < <(echo $mailBody)

0

上記の解決策のどれも私のために働いていません...

#!/bin/bash

# Message
echo "My message" > message.txt

# Mail
subject="Test"
mail_header="From: John Smith <john.smith@example.com>"
recipients="recipient@example.com"

#######################################################################
cat message.txt | mail -s "$subject" -a "$mail_header" -t "$recipients"

-1

以前に提供された回答は、CentOS5では機能しませんでした。muttをインストールしました。それは多くのオプションがあります。muttでは、次のようにします。

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.