Làm cách nào để thay đổi từ From: Trường lĩnh vực cho các email từ Cron?


34

Tôi sử dụng SMTP từ xa thông qua nullmailer và nó yêu cầu đặt Từ trường thành tên cụ thể, nhưng cron đặt nó là root@my.sweet.server.com.

Làm thế nào tôi có thể thay đổi nó thành một cái gì đó như me@ya.ru?


Những cron thực hiện (và hệ điều hành)?
Kimvais

Xem câu hỏi này: serverfault.com/questions/438843/ Kiếm cho một giải pháp khác.
cướp

Câu trả lời:


13

Tôi không nghĩ bạn có thể thay đổi địa chỉ TỪ, (ai đó nên thêm tùy chọn MAILFROM).

Bạn có thể làm một cái gì đó như thế này để đạt được kết quả tương tự:

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

Tất cả đầu ra được dẫn đến lệnh mail để biến MAILTO hoàn toàn không được sử dụng.

Địa chỉ đến sẽ cần được đặt nhưng bạn có thể sử dụng biến $ MAILTO. - đặt phần còn lại của các tùy chọn là tùy chọn sendmail để bạn có thể sử dụng các tùy chọn -r và -F.

-s là chủ đề

-r là địa chỉ trả lời

-F là tên đầy đủ của người gửi (làm cho nó trông đẹp hơn trong các ứng dụng email)


serverfault.com/a/437319/30697 có lẽ nên là câu trả lời được chấp nhận.
lkraav

34

Các phiên bản hiện đại của cron chấp nhận "MAILFROM = ..." ở định dạng crontab. Tôi khuyên bạn nên thử "man 5 crontab". Nếu nó đề cập đến MAILFROM, phiên bản của bạn sẽ hỗ trợ nó. Cụm từ cần tìm là vào cuối đoạn thảo luận về MAILTO, và nên là một cái gì đó như thế này:

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


6
"Hiện đại" nghĩa là gì? Điều này không được hỗ trợ bởi phiên bản mới nhất của cron trong Debian không ổn định (3.0pl1-124) so ​​với những gì tôi có thể thấy trong thay đổi hoặc tài liệu.
Flimzy

Thx, điều này làm việc cho tôi trên Archlinux. Có nhiều hương vị khác nhau của cron. ISC của Debian có từ năm 2004, do đó, mở rộng định nghĩa về "hiện đại", nhưng không có thông tin về hệ thống nào nó được sử dụng trên - khó có thể cung cấp chi tiết đó!
RuiDC

1
Thật không may, cron của Ubuntu (ít nhất là về 14.04 LTS) không có đề cập đến MAILFROMman 5 crontab.
Arto Bendiken

4
Bạn có thể cài đặt cronieđể thay thế crontrên Debian / Ubuntu. Ta-daa: MAILFROMtồn tại:
Andreas Klöckner

1
cronie không tồn tại trên Ubuntu 16.04
alex k

7

/ etc / mailname chứa phần tên miền của địa chỉ TỪ. Nếu / etc / mailname chứa 'somecompany.com' thì cron chạy cho root sẽ có người gửi là root@somecompany.com


2
Một số thông tin ở đây: wiki.debian.org/EtcMailName - không cho biết nếu nullmailer sử dụng nó. Tôi sử dụng sendmail và dường như nó không hoạt động.
Zitrax

5

Bạn có thể đặt nullmailer từ địa chỉ thông qua các biến môi trường hoặc dòng lệnh. Các đối số dòng lệnh là -f-Fcho địa chỉ người gửi và tên đầy đủ tương ứng.

Thông thường bạn có thể đặt các biến môi trường trong crontab.

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

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

Anh ấy hỏi về TỪ: không ĐẾN:
Kimvais

Hừm, cái này không hoạt động vì lý do không rõ.
Alexander Artemenko

3

Đối với tôi, cách dễ nhất để thay đổi địa chỉ từ một hệ thống, là tạo một ~/.mailrctệp có nội dung như thế này:

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

Bất kỳ maillệnh nào chạy như người dùng của tôi, bây giờ sử dụng các cài đặt này.



0

Một cách khác đơn giản là sử dụng mutt,

  • tạo một .muttrc trong thư mục chính của người dùng chạy cron bằng cách sau

    đặt realname = "Joe User" được đặt từ = "user @ host" set use_from = yes

  • Chạy một kịch bản với lệnh mutt trong đó hoặc đặt lệnh cron để mutt từ để gửi email.

Trước khi mutt gửi và gửi email, nó sẽ đặt tiêu đề From từ tệp .muttrc.


0

Tôi đã phải thay đổi /etc/mail/sendmail.cf/etc/mail/sendmail.mc, vì /etc/mailnamekhông được sử dụng. Nó chỉ thay đổi từ tên miền, không phải người dùng.


0

Dưới đây là một số điều bạn có thể áp dụng để thay đổi tên miền người gửi của mình:

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

-2

nó được gửi từ tên miền @ user - người dùng là tên đăng nhập mà cron đang chạy bên dưới - vì vậy bạn phải tạo một người dùng 'tôi' - và chạy công việc cron như người dùng đó.

Sau đó, để thay đổi tên miền, có nhiều khả năng khác nhau - có thể là bạn cần thay đổi mục nhập tệp máy chủ (hoặc, như trên máy của tôi, khi tôi định cấu hình này - một hộp ubfox) - thay đổi / etc / mailname - là tên miền bạn muốn nó đến từ.


1
Điều này thực sự không đúng - ít nhất là không trong nhiều trường hợp. Chẳng hạn, trên hệ thống của tôi, nó chỉ được gửi từ 'user', không phải 'user @ domain'. MTA có trách nhiệm thêm tên miền địa phương. Điều này rất có ý nghĩa trong một số trường hợp (chẳng hạn như của tôi) khi MTA của tôi (vì lý do quá phức tạp và nhàm chán để mô tả) không thêm tên miền.
Flimzy
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.