Thay đổi địa chỉ “Từ:” trong Unix “mail”


88

Gửi thư từ dòng lệnh Unix bằng cách sử dụng mail TO_ADDRkết quả là email từ $USER@$HOSTNAME. Có cách nào để thay đổi địa chỉ "Từ:" được chèn bởi mailkhông?

Đối với hồ sơ, tôi đang sử dụng GNU Mailutils 1.1 / 1.2 trên Ubuntu (nhưng tôi đã thấy hành vi tương tự với Fedora và RHEL).

[BIÊN TẬP]

$ mail -s Đang kiểm tra chris@example.org                                                                  
Cc: 
Từ: foo@bar.org

Thử nghiệm
.

hoa lợi

Chủ đề: Thử nghiệm
Tới: <chris@example.org>
X-Mailer: mail (GNU Mailutils 1.1)
Id thư: <E1KdTJj-00025z-RK @ localhost>
Từ: <chris @ localhost>
Ngày: Thứ 4, ngày 10 tháng 9 năm 2008 13:17:23 -0400

Từ: foo@bar.org

Thử nghiệm

Dòng "Từ: foo@bar.org" là một phần của nội dung thư, không phải là một phần của tiêu đề.


1
Đây là hương vị gì của Unix? và phiên bản mail nào? Chỉ để biết nơi mà điều đó không hoạt động.
Vinko Vrsalovic

Ừm, gần như là tất cả. Bất kỳ ai sử dụng mailx hoặc mail berkeley sẽ thấy nó theo cách đó. Nếu bạn muốn ảnh hưởng đến tiêu đề, hãy viết toàn bộ tiêu đề và gửi trực tiếp bằng rmail hoặc sendmail.
Thomas Kammeyer

Ồ, nhưng, xin lỗi, tôi chạy GenToo.
Thomas Kammeyer

Đối với bản ghi, tôi đang sử dụng mailx và ví dụ mà Chris đưa ra hoạt động. Hay đó là ý của bạn?
Vinko Vrsalovic

Vinko, bạn đang chạy phiên bản UN * X nào vậy? Ý của bạn là "làm việc" rằng bạn nhận được kết quả của anh ta hay bạn có được hành vi mong muốn đáp ứng nhu cầu của anh ta? Nó phụ thuộc ở một mức độ nào đó vào cách thức gửi tin nhắn hoạt động trên nền tảng của bạn và liệu khách hàng có thêm dòng trống trước dấu
Thomas Kammeyer 10/09/10/08

Câu trả lời:


106

Trong phiên bản thư của tôi (Debian linux 4.0), các tùy chọn sau hoạt động để kiểm soát địa chỉ nguồn / trả lời

  • các -a chuyển đổi, cho tiêu đề bổ sung để áp dụng, cung cấp một Từ: tiêu đề trên dòng lệnh sẽ được nối vào tiêu đề thư đi
  • các $ REPLYTO biến môi trường quy định cụ thể một Reply-To: tiêu đề

vì vậy chuỗi sau

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

Kết quả, trong ứng dụng thư của tôi, là thư từ cms-sends@example.com, mà bất kỳ thư trả lời nào sẽ mặc định là cms-replies@example.com

NB: Người dùng Mac OS: bạn không có -a, nhưng bạn có $ REPLYTO

NB (2): Người dùng CentOS, nhiều người bình luận đã nói thêm rằng bạn có cần sử dụng -rkhông-a

NB (3): Câu trả lời này ít nhất là mười năm (1), hãy ghi nhớ điều đó khi bạn đến từ Google.


Tôi vừa kiểm tra lại nó ở đây để đảm bảo, và nó hoạt động tốt đối với tôi. Không phải tất cả các ứng dụng thư đều hoạt động tốt với Reply-To, nhưng tôi nghĩ rằng đó là một vấn đề đã được giải quyết cho đến nay. Biến REPLYTO env được đề cập trong man page, Các thư UNIX khác tôn trọng nó, emacs, v.v. Tuy nhiên, tôi đoán bạn đã sửa được.
cms 19/12/08

Tôi không nghĩ đó là ứng dụng thư ... Tôi không thấy tiêu đề Trả lời đến trong văn bản thư thô. Nhưng, vâng, -a là đủ.
Chris Conway

1
Không, nó không. Nhưng: "Sổ tay hướng dẫn hoàn chỉnh của GNU mailutils không có sẵn trong hệ thống Debian vì lý do cấp phép." -aReply-To: ... hoạt động.
Chris Conway

Tôi cũng không thấy bất kỳ đề cập nào về REPLYTO tại gnu.org/software/mailutils/manual/mailutils.html
Chris Conway

4
trong CentOS, mail -atùy chọn có nghĩa là "attachemnet". Tôi cần sử dụng -rlikemail -r from@whatever.com
tương đương

42

Trên Centos 5.3, tôi có thể thực hiện:

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

Dấu gạch ngang kép ngăn thư phân tích cú pháp đối số -f và chuyển nó đến chính sendmail.


2
không hoạt động. 3 địa chỉ được thêm vào địa chỉ ngay bây giờ. để địa chỉ, địa chỉ e và localdomain
shorif2000

2
Bạn có thể giúp đỡ, điều này sử dụng để làm việc - nhưng, kể từ khi một bản cập nhật gần đây, nó không có tác phẩm lâu hơn, nó chỉ cố gắng bổ sung cách gửi email đến -f @ hostname
Wil

1
Không hoạt động trên CentOS 6.3. Hãy thử câu trả lời @ ubuntu-fanboy dưới đây bằng cách sử dụng cờ -r.
skytaker

26

Lệnh 'mail' của GNU mailutils không cho phép bạn làm điều này (ít nhất là dễ dàng). Nhưng nếu bạn cài đặt 'heirloom-mailx', lệnh mail (mailx) của nó có tùy chọn '-r' để ghi đè trường '$ USER @ $ HOSTNAME' mặc định từ trường.

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

Hoạt động cho 'mailx' nhưng không hoạt động cho 'mail'.

$ ls -l / usr / bin / mail
lrwxrwxrwx 1 root root 22 2010-12-23 08:33 / usr / bin / mail -> / etc / Alternatives / mail
$ ls -l / etc / Alternatives / mail
lrwxrwxrwx 1 root root 23 2010-12-23 08:33 / etc / Alternatives / mail -> / usr / bin / heirloom-mailx

5
Có thể hữu ích khi biết rằng maillệnh GNU mailutils được cài đặt sẵn trên Ubuntu 14.04 LTS hỗ trợ -rtùy chọn, vì vậy bạn có thể dễ dàng đặt địa chỉ người gửi.
gerlos

Tôi đã thử nghiệm trên Debian 9.11 và tùy chọn này cũng hoạt động.
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

ở trên là giải pháp của tôi .... bất kỳ tiêu đề bổ sung nào có thể được thêm ngay sau từ và trước câu trả lời cho ... chỉ cần đảm bảo bạn biết cú pháp tiêu đề của mình trước khi thêm chúng .... điều này hoạt động hoàn hảo đối với tôi.


1
Điều này đang làm việc cho tôi với ví dụ của bạn ... Khi tôi thay đổi chủ đề địa chỉ email, v.v. tất cả các tiêu đề đều bị xóa?
bsmoo

7

Thêm vào đó, rất tốt để sử dụng -F optionđể chỉ định Tên người gửi.

Một cái gì đó như thế này:

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

Hoặc chỉ cần xem các tùy chọn có sẵn: http://www.courier-mta.org/sendmail.html


5

Cũng có thể đặt cả tên Người gửi và địa chỉ từ bằng cách sử dụng một cái gì đó như:

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

Vì một số lý do mà việc chuyển qua -F'Some Name'-fexample2@example.comkhông hoạt động, nhưng việc chuyển -tđến sendmail hoạt động và rất "dễ dàng".


4

Dưới đây là một số tùy chọn:

  • Nếu bạn có đủ privelige, hãy định cấu hình sendmail để viết lại bằng bảng generics

  • Tự viết toàn bộ tiêu đề (hoặc gửi qua thư cho chính bạn, lưu toàn bộ thư với tất cả các tiêu đề, chỉnh sửa lại và gửi bằng rmail từ dòng lệnh

  • Gửi trực tiếp bằng sendmail, sử dụng cờ dòng lệnh "-f" và không đưa dòng "Từ:" vào thư của bạn

Những điều này không hoàn toàn giống nhau, nhưng tôi sẽ để bạn xem xét kỹ hơn.

Trên thiết bị di động của mình, tôi đã xác thực sendmail như một ứng dụng khách tới một máy chủ thư đi và tôi sử dụng các thông số chung để làm cho thư trả lại đến với một tài khoản khác. Nó hoạt động như một say mê. Tôi tổng hợp thư đến bằng thư tìm nạp.


4

Tôi rút ra điều này từ tất cả các câu trả lời ở trên. Không có gì hiệu quả với tôi khi tôi thử từng cái trong số chúng. Tôi đã làm rất nhiều lỗi bằng cách kết hợp tất cả các câu trả lời ở trên và kết luận về điều này. Tôi không chắc liệu điều này có phù hợp với bạn hay không nhưng nó đã hoạt động với tôi trên Ununtu 12.04 và 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>'

Người ta có thể gửi thư cho bất kỳ số lượng người nào bằng cách thêm bất kỳ số lượng id người nhận nào và thư được gửi bởi SenderName từ from-id@email.com

Hi vọng điêu nay co ich.


điều này không hoạt động vor / usr / bin / mail, có thể lệnh của bạn dành cho sendmail.
basZero

3

Tôi không biết nó có giống với hệ điều hành khác không, nhưng trong OpenBSD, lệnh mail có cú pháp sau:

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

sendmail có tùy chọn -f nơi bạn chỉ ra địa chỉ email cho trường FROM:. Lệnh sau phù hợp với tôi.

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

Làm việc cho tôi! (Cũng mởBSD - Macbook pro.)
Aeonaut

1
Cập nhật - người nhận email vẫn thấy tên tài khoản cục bộ của tôi trước đây from@example.com- ví dụ: "Aeonaut from@example.com". Bất kỳ ý tưởng làm thế nào để thay đổi điều này?
Aeonaut

3
Không làm việc cho tôi. (os x sư tử núi) "mail: Không thể cung cấp -f và người gửi đến."
Jonny

3

Cảm ơn BEAU

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

Tôi vừa tìm thấy cái này và nó phù hợp với tôi. Các trang dành cho thư 8.1 trên CentOS 5 không đề cập đến điều này. Đối với -ftùy chọn, trang người đàn ông nói:

-f Đọc thư từ tệp được đặt tên bởi toán hạng tệp thay vì hộp thư hệ thống. (Xem thêm thư mục.) Nếu không có toán hạng tệp nào được chỉ định, hãy đọc thư từ mbox thay vì hộp thư hệ thống.

Vì vậy, dù sao điều này là tuyệt vời để tìm thấy, cảm ơn.


1
-ftất nhiên không phải là một tùy chọn mailtrong ví dụ của bạn, vì nó ở trước --. Tùy chọn đó được giao cho MTA của bạn
Anthon

3

Trên Debian 7, tôi vẫn không thể đặt chính xác địa chỉ người gửi bằng các câu trả lời từ câu hỏi này, (sẽ luôn là tên máy chủ của máy chủ) nhưng đã giải quyết theo cách này.

Cài đặt heirloom-mailx

apt-get install heirloom-mailx

đảm bảo nó là mặc định.

update-alternatives --config mailx

Soạn tin nhắn.

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

update-alternativesLệnh này đang làm gì? Nó cho tôi 3 sự lựa chọn và tôi phân vân.
Stephane

1

Trên CentOS, điều này đã làm việc cho tôi:

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 cho phép bạn chỉ định nhiều tùy chọn chuỗi, cho đến nay là cách dễ nhất để sửa đổi các tiêu đề và những thứ tương tự.



0

điều này làm việc cho tôi

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

0

Trên CentOS 5.5, cách dễ nhất mà tôi đã tìm thấy để đặt mặc định từ miền là sửa đổi tệp máy chủ. Nếu tệp máy chủ của bạn chứa địa chỉ IP WAN / công khai của bạn, chỉ cần sửa đổi tên máy chủ đầu tiên được liệt kê cho nó. Ví dụ: tệp máy chủ của bạn có thể trông giống như sau:

...
11.22.33.44 localhost mặc định tên miền whatever-else.com
...

Để làm cho nó được gửi từ any-else.com, chỉ cần sửa đổi nó để any-else.com được liệt kê đầu tiên, ví dụ:

...
11.22.33.44 whatever-else.com localhost mặc định tên miền
...

Tôi không thể nói cho bất kỳ bản phân phối nào khác (hoặc thậm chí phiên bản CentOS) nhưng trong trường hợp cụ thể của tôi, phần trên hoạt động hoàn hảo.


0

Điều gì cho phép tôi có địa chỉ trả lời tùy chỉnh trên một Ubuntu 16.04UTF-8mã hóa và tệp đính kèm:

Cài đặt ứng dụng thư:

sudo apt-get install heirloom-mailx

Chỉnh sửa cấu hình SMTP:

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

Gửi thư:

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

Không có giải pháp nào ở trên phù hợp với tôi ...

#!/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

Các câu trả lời được cung cấp trước đây không phù hợp với tôi trên CentOS5. Tôi đã cài đặt mutt. Nó có rất nhiều lựa chọn. Với mutt, bạn làm theo cách này:

export EMAIL=myfrom@example.com
export REPLYTO=myreplyto@example.com
mutt -s Testing chris@example.org
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.