Unix "mail"에서 "From :"주소 변경


89

사용 유닉스 명령 행에서 메시지를 보내기 mail TO_ADDR에서 이메일로 결과를 $USER@$HOSTNAME. 에 의해 삽입 된 "보낸 사람 :"주소를 변경하는 방법이 mail있습니까?

기록을 위해 Ubuntu에서 GNU Mailutils 1.1 / 1.2를 사용하고 있습니다 (그러나 Fedora 및 RHEL에서 동일한 동작을 보았습니다).

[편집하다]

$ mail -s 테스트 chris@example.org                                                                  
참조 : 
보낸 사람 : foo@bar.org

테스팅
.

수확량

주제 : 테스트
받는 사람 : <chris@example.org>
X-Mailer : mail (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
이것은 유닉스의 어떤 맛입니까? 그리고 어떤 메일 버전? 그것이 작동하지 않는 곳을 알고 싶습니다.
Vinko Vrsalovic

음, 거의 다. mailx 또는 berkeley 메일을 사용하는 사람은 누구나 그렇게 볼 수 있습니다. 헤더에 영향을 미치려면 전체 헤더를 작성하고 rmail 또는 sendmail로 직접 보내십시오.
Thomas Kammeyer

아, 죄송합니다. 저는 GenToo를 실행합니다.
Thomas Kammeyer

기록을 위해 저는 mailx를 사용하고 있으며 Chris가 제공하는 예제가 작동합니다. 아니면 그게 무슨 뜻입니까?
Vinko Vrsalovic

Vinko, 어떤 버전의 UN * X를 실행하고 있습니까? 당신이 그의 결과를 얻거나 그의 필요를 해결할 원하는 행동을 얻는다는 "일"을 의미합니까? 플랫폼에서 메시지 제출이 작동하는 방식과 클라이언트가 이전에 빈 줄을 추가하는지 여부에 따라 어느 정도 달라집니다
Thomas Kammeyer

답변:


109

내 버전의 메일 (Debian linux 4.0)에서 소스 / 답장 주소를 제어하기 위해 다음 옵션이 작동합니다.

  • -a 보내는 메일 헤더에 추가됩니다 명령 행에서 헤더 : 추가 헤더 스위치,에서을 공급, 적용
  • $의 ReplyTo의의 환경 변수는 회신을 지정합니다 : 헤더

그래서 다음 순서

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

내 메일 클라이언트에서 결과는 cms-sends@example.com에서 보낸 메일이며, 모든 회신의 기본값은 cms-replies@example.com입니다.

NB : 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 매뉴얼은 라이센스상의 이유로 데비안 시스템에서 사용할 수 없습니다." -aReply-To : ... 작동합니다.
Chris Conway

또한 gnu.org/software/mailutils/manual/mailutils.html에서 REPLYTO에
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

이중 대시는 메일이 -f 인수를 구문 분석하는 것을 중지하고 sendmail 자체에 전달합니다.


3
작동하지 않습니다. 이제 3 개의 주소가 주소에 추가됩니다. to 주소, f 주소 및 localdomain
shorif2000 2014-06-09

2
도움이
Wil

1
CentOS 6.3에서 작동하지 않습니다. -r 플래그를 사용하여 아래 @ ubuntu-fanboy 대답을 시도하십시오.
skytaker

26

GNU mailutils의 'mail'명령으로는이 작업을 수행 할 수 없습니다 (적어도 쉽게). 그러나 'heirloom-mailx'를 설치하면 메일 명령 (mailx)에 '-r'옵션이있어 필드의 기본 '$ USER @ $ HOSTNAME'을 무시합니다.

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

데비안 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

위의 내용은 내 솔루션입니다 .... 모든 추가 헤더는 보낸 사람과 답장을 보내기 전에 추가 할 수 있습니다. 헤더 구문을 추가하기 전에 알고 있는지 확인하세요 .... 이것은 나를 위해 완벽하게 작동했습니다.


1
이것은 당신의 모범으로 나를 위해 일하고 있습니다 ... 이메일 주소 제목 등을 변경하면 모든 헤더가 표시됩니까?
bsmoo

7

또한 -F option보낸 사람의 이름을 지정하는 데 사용 하는 것이 좋습니다 .

이 같은:

mail -s "$SUBJECT" $MAILTO -- -F $MAILFROM -f ${MAILFROM}@somedomain.com

또는 사용 가능한 옵션을 살펴보십시오. http://www.courier-mta.org/sendmail.html


5

다음과 같이 보낸 사람 이름과 보낸 사람 주소를 모두 설정할 수도 있습니다.

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

어떤 이유로 통과 -F'Some Name'하고 -fexample2@example.com작동하지 않지만 -tsendmail에 전달하는 것은 작동하며 "쉬운"것입니다.


4

다음은 몇 가지 옵션입니다.

  • 충분한 권한이있는 경우 generics 테이블을 사용하여 다시 작성하도록 sendmail을 구성하십시오.

  • 전체 헤더를 직접 작성 (또는 자신에게 메일로 보내고 모든 헤더와 함께 전체 메시지를 저장하고 다시 편집 한 다음 명령 줄에서 rmail로 전송)

  • sendmail로 직접 보내고 "-f"명령 줄 플래그를 사용하고 "보낸 사람 :"줄을 메시지에 포함하지 마십시오.

이것들은 모두 똑같은 것은 아니지만 더 자세히 살펴볼 것입니다.

내 휴대용 컴퓨터에는 보내는 메일 서버에 대한 클라이언트로 인증하는 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를 원하는만큼 추가하여 원하는 수의 사람에게 메일을 보낼 수 있으며 메일은 from-id@email.com 에서 SenderName 으로 전송됩니다.

도움이 되었기를 바랍니다.


이것은 / usr / bin / mail에서 작동하지 않습니다. 아마도 당신의 명령은 sendmail에 대한 것입니다.
basZero

3

다른 OS와 동일한 지 모르겠지만 OpenBSD에서 mail 명령은 다음 구문을 사용합니다.

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

sendmail에는 FROM : 필드에 대한 이메일 주소를 나타내는 -f 옵션이 있습니다. 다음 명령이 저에게 효과적입니다.

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

나를 위해 작동합니다! (또한 오픈 BSD - 맥북 프로.)
Aeonaut

1
업데이트-이메일 수신자는 이전에 내 로컬 계정 이름 ( from@example.com예 : "Aeonaut from@example.com")을 계속 볼 수 있습니다. 이것을 변경하는 방법을 아십니까?
Aeonaut

3
나를 위해 작동하지 않습니다. (os x mountain lion) "mail : -f와 보낼 사람을 줄 수 없습니다."
Jonny 2013 년

3

감사합니다 BEAU

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

나는 이것을 발견했고 그것은 나를 위해 작동합니다. CentOS 5의 메일 8.1에 대한 매뉴얼 페이지에는 이에 대해 언급하지 않습니다. 에 대한-f 옵션은 매뉴얼 페이지는 말한다 :

-f 시스템 메일 함 대신 파일 피연산자에 의해 명명 된 파일에서 메시지를 읽습니다. (폴더도 참조하십시오.) 파일 피연산자가 지정되지 않은 경우 시스템 메일 함 대신 mbox에서 메시지를 읽으십시오.

어쨌든 이것은 찾아서 좋습니다. 감사합니다.


1
-f물론 mail앞에 --. 그 옵션은 당신의 MTA에 인도된다
안톤

3

데비안 7에서는 여전히이 질문의 답변을 사용하여 보낸 사람 주소를 올바르게 설정할 수 없었지만 (항상 서버의 호스트 이름이 될 것입니다) 이렇게 해결했습니다.

가보 우편물 설치

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 개의 선택권을 준다. 그리고 나는 의아해한다.
Stephane

1

CentOS에서 이것은 나를 위해 일했습니다.

echo "email body" | mail -s "Subject here" -r from_email_address email_address_to

1

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

-S를 사용하면 헤더 등을 수정하는 가장 쉬운 방법 인 많은 문자열 옵션을 지정할 수 있습니다.


1

에코 "테스트"| mailx -r fake@example.com -s '테스트'email@example.com

OpenBSD에서 작동합니다.


0

이것은 나를 위해 일했다

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

0

CentOS 5.5에서 도메인에서 기본값을 설정하는 가장 쉬운 방법은 호스트 파일을 수정하는 것입니다. 호스트 파일에 WAN / 공용 IP 주소가 포함 된 경우 나열된 첫 번째 호스트 이름을 수정하기 만하면됩니다. 예를 들어 호스트 파일은 다음과 같습니다.

...
11.22.33.44 localhost 기본 도메인 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를 사용하면 다음과 같이합니다.

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.