Cronからのメールの「差出人:」フィールドを変更する方法


34

nullmailer経由でリモートSMTPを使用し、Fromフィールドに特定の名前を設定する必要がありますが、cronはroot@my.sweet.server.comとして設定します。

me@ya.ruのような名前に変更するにはどうすればよいですか?


どのcron実装(およびOS)?
キンヴェー

別の解決策については、この質問をご覧ください:serverfault.com/questions/438843/…
ロビン

回答:


13

FROMアドレスを変更できるとは思いません(誰かがMAILFROMオプションを追加する必要があります)。

同様の結果を得るには、次のようなこともできます。

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" toaddress@example.com -- -r "fromaddress@example.com" -F"Full Name of sender"

すべての出力はmailコマンドにパイプされるため、MAILTO変数はまったく使用されません。

宛先アドレスを設定する必要がありますが、$ MAILTO変数を使用できる場合があります。-は残りのオプションをsendmailオプションに設定するため、-rおよび-Fオプションを使用できます。

-sは主題です

-rは返信アドレスです

-Fは送信者の氏名です(電子メールクライアントで見た目がよくなります)


serverfault.com/a/437319/30697がおそらく受け入れられた答えであるべきです。
lkraav

34

cronの最新バージョンは、crontab形式の「MAILFROM = ...」を受け入れます。「man 5 crontab」を試してみることをお勧めします。MAILFROMに言及している場合は、お使いのバージョンでサポートされているはずです。探すべきフレーズは、MAILTOについて説明する段落の終わりに向かっており、次のようなものでなければなりません。

If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ''root'' will be used.


6
「モダン」とはどういう意味ですか?これは、Debian不安定版(3.0pl1-124)の最新バージョンのcron(changelogまたはドキュメンテーションで見ることができるもの)ではサポートされていません。
Flimzy

thx、これはArchlinuxでうまくいきました。cronにはさまざまな種類があります。DebianのISCは2004年のものであるため、「モダン」の定義を拡張していますが、どのシステムで使用されているかに関する情報はありません-その詳細を提供するのは難しいです!
RuiDC

1
残念ながら、Ubuntuのcron(少なくとも14.04 LTS以降)には言及さMAILFROMれていませんman 5 crontab
アルトベンディケン14年

4
Debian / Ubuntuにインストールcronieして置き換えることができcronます。Ta-daa:MAILFROM存在:
アンドレアスクロックナー

1
cronieはUbuntu 16.04に存在しません
k

7

/ etc / mailnameには、FROMアドレスのドメイン名部分が含まれています。/ etc / mailnameに「somecompany.com」が含まれている場合、rootで実行されているcronの送信者はroot@somecompany.comになります。


2
ここにいくつかの情報があります:wiki.debian.org/EtcMailName-nullmailerがそれを使用するかどうかを言いません。私はsendmailを使用していますが、うまくいかないようです。
-Zitrax

5

nullmailerは、環境変数またはコマンドラインを介してアドレスから設定できます。コマンドライン引数は-f-F送信者アドレスとフルネーム用です。

通常、crontabで環境変数を設定できます。

NULLMAILER_USER=webmaster
NULLMAILER_HOST=host.example.com
NULLMAILER_NAME="Mr Cron"

5 0 * * * /usr/local/bin/daily.sh

彼は約求めています:しないように:
Kimvais

うーん、これは不明な理由で機能しません。
アレクサンダーアルテメンコ

3

私にとって、システムの送信元アドレスを変更する最も簡単な方法は、次の~/.mailrcような内容のファイルを作成することです。

set name="My Full Name"
set from="myrealemail@example.com"

mailユーザーとして実行するコマンドはすべて、これらの設定を使用するようになりました。



0

もう1つの簡単な代替方法は、muttを使用することです。

  • 以下を使用して、cronを実行するユーザーのホームディレクトリに.muttrcを作成します。

    set realname = "Joe User" set from = "user @ host" set use_from = yes

  • muttコマンドを含むスクリプトを実行するか、cronコマンドをmuttにパイプして電子メールを送信します。

muttは、電子メールを送信する前に、.muttrcファイルのFromヘッダーを設定します。


0

を使用しなかったため、変更する必要が/etc/mail/sendmail.cfありました。ただし、ユーザーではなく、fromドメインのみを変更します。/etc/mail/sendmail.mc/etc/mailname


0

送信者ドメインを変更するために適用できるいくつかの事項を次に示します。

Edit this file: /etc/mailname and change to:
    example.org
sudo postconf -e 'myhostname= example.org'
sudo systemctl restart postfix

-2

user @ domainからメールで送信されます-ユーザーはcronが実行されているログイン名です-そのため、ユーザー 'me'を作成し、そのユーザーとしてcronジョブを実行する必要があります。

次に、ドメインを変更するには、さまざまな可能性があります-hostsファイルのエントリを変更する必要がある可能性があります(または、私のマシンでは、これを設定していたとき、ubuntuボックス)-/ etc / mailnameを変更します-希望するドメインになります。


1
これは実際には正しくありません。少なくとも多くの場合はそうではありません。たとえば、私のシステムでは、「user @ domain」ではなく「user」からのみ送信されます。ローカルドメイン名を追加するのはMTAの責任です。これは、私のMTA(複雑すぎて説明するのが面倒なので)がドメイン名を追加していない場合(私の場合など)に重要です。
Flimzy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.