Cron sử dụng mailer nào để gửi mail?


11

Tôi đang cố gắng khắc phục sự cố với cron không gửi thư trên hộp Centos 6 mà tôi không định cấu hình. Làm thế nào tôi có thể xác định cron mailer nào đang sử dụng để gửi mail? Trang người đàn ông crontab có phần này để nói, một phần:

Ngoài LOGNAME, HOME và SHELL, cron (8) sẽ xem MAILTO nếu có bất kỳ lý do nào để gửi thư do chạy các lệnh trong "crontab" này. Nếu MAILTO được xác định (và không trống), thư sẽ được gửi cho người dùng được đặt tên như vậy. Nếu MAILTO được xác định nhưng trống (MAILTO = ""), sẽ không có thư nào được gửi. Nếu không, thư được gửi đến chủ sở hữu của crontab. Tùy chọn này hữu ích nếu bạn quyết định / bin / mail thay vì / usr / lib / sendmail làm người gửi thư khi bạn cài đặt cron - / bin / mail doesn làm bí danh và UUCP thường không đọc thư của nó.

Phần có dấu hoa thị là phần khiến tôi tự hỏi "Chà, đó là sendmail hay mail?"

Câu trả lời:


3

Google nhanh chóng cho tôi biết đó /etc/sysconfig/crondlà tệp xác định thư nào được sử dụng bởi cron.


Google-fu của tôi rõ ràng là khủng khiếp vì tôi đã dành một khoảng thời gian tốt để tìm kiếm thứ này. Cảm ơn.
cbmanica

23

Theo trang man cho cron (8) (daemon thực sự gửi tin nhắn):

   -m     This  option  allows you to specify a shell command string to use for 
          sending cron mail output instead of sendmail(8).  This command must 
          accept a fully formatted mail message (with headers) on stdin and send
          it as a mail message to the recipients specified in the mail headers.

Điều đó khiến tôi tin rằng nó sử dụng sendmail theo mặc định. Hãy xác minh với bước đi:

Thiết lập một công việc định kỳ sẽ tạo email:

user@host1 ~:
$ crontab -e
crontab: installing new crontab
user@host1 ~:
$ crontab -l
MAILTO=example@example.com
*/5 * * * * echo "testing"

Bây giờ hãy tìm ID tiến trình cho crond:

user@host1 ~:
$ ps auxww | grep crond
root      9684  0.0  0.0 117280  1296 ?        Ss   Jul22   0:17 crond
user     36344  0.0  0.0 103240   884 pts/2    S+   23:01   0:00 grep crond

Đính kèm với quy trình crond với strace, tìm kiếm hoạt động liên quan đến quá trình. Khi strace viết lên stderr, tôi đã chuyển hướng nó tới thiết bị xuất chuẩn và được ghi nhận cho 'mail':

root@host1 ~:
# strace -fp 9684 -s 1024 -e trace=process 2>&1 | grep mail
[pid 36204] execve("/usr/sbin/sendmail", ["/usr/sbin/sendmail", "-FCronDaemon", "-i", "-odi", "-oem", "-oi", "-t", "-f", "root"], [/* 16 vars */]) = 0
^C

Đúng, đó là sendmail.


4
Trên hệ thống bạn đã thử nghiệm.
mfinni

3
Phải, đó là CentOS như được gắn thẻ cho câu hỏi này, trong cấu hình mặc định của nó.
yoonix

2
Tôi biết tôi đang đập một cái trống mệt mỏi ở đây, nhưng đó là một tham số có thể định cấu hình và câu hỏi liên quan đến một hệ thống mà người hỏi không thiết lập. Các bưu phẩm có thể đã được thay đổi trước đó từ mặc định, cho hệ thống được đề cập. Người hỏi biết mặc định.
mfinni

6
Đúng nhưng trong cấu hình mặc định của nó, không có thư tham chiếu nào trong tệp cấu hình (trừ bình luận, toàn bộ nội dung là CRONDARGS=). Thực tế là nó có thể cấu hình được là lý do tại sao tôi bao gồm các bước để tự xác minh.
yoonix
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.