Cron의 이메일에 대한 "보낸 사람 :"필드를 변경하는 방법은 무엇입니까?


34

nullmailer를 통해 원격 SMTP를 사용하며 From 필드를 특정 이름으로 설정해야하지만 cron은 root@my.sweet.server.com으로 설정해야합니다.

어떻게 me@ya.ru와 같은 것으로 바꿀 수 있습니까?


어떤 크론 구현 (및 OS)?
Kimvais

다른 솔루션에 대해서는이 질문을 참조하십시오 : serverfault.com/questions/438843/…
robin

답변:


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
"현대"는 무엇을 의미합니까? 변경 로그 또는 설명서에서 볼 수있는 데비안 불안정 (3.0pl1-124)의 최신 버전의 cron에서는 지원하지 않습니다.
Flimzy

thx, 이것은 Archlinux에서 나를 위해 일했습니다. 크론에는 여러 가지 맛이 있습니다. 데비안의 ISC는 2004 년에 시작되었으므로 "현대"의 정의를 확장하고 있지만 어떤 시스템에 사용되고 있는지에 대한 정보는 없습니다.
RuiDC

1
불행하게도, (적어도 14.04의 같은 LTS) 우분투의 크론은 언급이없는 MAILFROM의를 man 5 crontab.
Arto Bendiken

4
데비안 / 우분투 cronie를 대체하기 위해 설치할 수 있습니다 cron. Ta-daa : MAILFROM존재 :
Andreas Klöckner

1
cronie는 Ubuntu 16.04에 없습니다
alex k

7

/ etc / mailname은 FROM 주소의 도메인 이름 부분을 포함합니다. / etc / mailname에 'somecompany.com'이 포함 된 경우 루트 용으로 실행중인 크론은 보낸 사람이 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

그는 FROM에 대해 묻습니다 : TO TO :
Kimvais

흠, 이것은 알 수없는 이유로 작동하지 않습니다.
Alexander Artemenko

3

나를 위해 시스템에서 보낸 사람 주소를 변경하는 가장 쉬운 방법은 다음 ~/.mailrc과 같은 내용 으로 파일 을 만드는 것입니다.

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

mail내 사용자로 실행되는 모든 명령은 이제이 설정을 사용합니다.



0

또 다른 간단한 대안은 mutt를 사용하는 것입니다.

  • 다음과 같이 cron을 실행하는 사용자의 홈 디렉토리에 .muttrc를 작성하십시오.

    realname = "Joe User"설정 from = "user @ host"설정 use_from = yes

  • mutt 명령이 포함 된 스크립트를 실행하거나 cron 명령을 파이프하여 이메일을 보내도록 mutt하십시오.

mutt 전송 및 이메일 전송 전에 .muttrc 파일에서 From 헤더를 설정합니다.


0

나는 변경했다 /etc/mail/sendmail.cf하고 /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 작업을 실행해야합니다.

그런 다음 도메인을 변경하려면 다른 가능성이 있습니다. 호스트 파일 항목을 변경해야 할 수도 있습니다 (또는 내 컴퓨터에서 우분투 상자를 구성했을 때)-변경 / etc / mailname -원하는 도메인이 되십시오.


1
이것은 사실이 아닙니다. 적어도 많은 경우에는 그렇지 않습니다. 예를 들어 내 시스템에서는 'user @ domain'이 아닌 'user'에서만 전송됩니다. 로컬 도메인 이름을 추가하는 것은 MTA의 책임입니다. 내 MTA (너무 복잡하고 설명하기가 지루한 이유로)가 도메인 이름을 추가하지 않는 경우 (예 : 광산)에서 중요합니다.
Flimzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.