Nhận postfix để chuyển tiếp thư gốc


13

Tôi có một máy chủ Ubuntu đang chạy postfix. Nó không phải là máy chủ mail cho miền của tôi.

Bất cứ khi nào một công việc cron chạy cho root, thư đầu ra không được gửi cục bộ, thay vào đó nó được gửi đến root@mydomain.com thông qua máy chủ thư chính. Đây không phải là điều tôi muốn.

Tôi muốn thư cho root sẽ được gửi cục bộ hoặc chuyển tiếp đến othermail@anotherdomain.com.

Tôi đã thử sửa đổi cả hai ~root/.forward/etc/aliases(và chạy newaliases), nhưng không có gì giúp được (tôi đoán những tệp này chỉ được kiểm tra khi postfix cố gửi thư cục bộ).

Tôi có thể làm gì?

Đây là /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

Biên tập:

Khi gửi thư đến root, điều này sẽ đi vào /var/log/mail.log:

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

Tên "ct" là tên người dùng của tôi. Tôi đã tạo văn bản trên thông qua lệnh này:

echo test | mail -s test root

Nội dung của /etc/mailnamelà:

mydomain.com

Nội dung của /etc/aliaseslà:

root: anothermail@anotherdomain.com
postmaster:    root

nơi othermail@anotherdomain.com là nơi tôi muốn chuyển tiếp thư của root.

Nội dung /etc/hoststhực sự làm tôi ngạc nhiên một chút:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

trong đó "mylinux" là tên máy chủ của hệ điều hành máy chủ, trong đó linux1 chạy như một máy ảo. Tôi không chắc làm thế nào "mylinux" có trong đó. (Nhưng điều này thực sự có thể là lý do cho vấn đề của tôi?)


Bạn có thể cung cấp cho chúng tôi nhật ký postfix của bạn khi bạn gửi thư đến root không?
Dom

Tôi đã làm như vậy trong một chỉnh sửa cho bài viết gốc.
oz1cz

Bạn có thể cho chúng tôi các tập tin / etc / mailname và / etc / aliases không? Kiểm tra xem / etc / hosts có chứa linux1.mydomain.com được gán cho 127.0.1.1
Dom

Tôi đã thêm thông tin vào bài viết gốc.
oz1cz

Theo nhật ký của bạn, thư đã được gửi chính xác tới rơle smtp của bạn. Tôi yêu cầu họ (isp) kiểm tra my.isps.relayhost.com [<địa chỉ IP bị bỏ qua>] nhật ký cho bất kỳ đầu mối (antispam, lỗi, ...) về vấn đề.

Câu trả lời:


13

Khi sử dụng, kiểm tra nhật ký của bạn.

Trong trường hợp của bạn, daemon postfix nghĩ rằng thư không dành cho nó và gửi nó mà không sử dụng /etc/aliases

Trước tiên hãy kiểm tra /etc/hoststệp của bạn : nó phải có tên máy của bạn tương ứng với 127.0.1.1: 127.0.1.1 linux1.mydomain.com linux1

Kiểm tra của bạn /etc/mailnamequá, và nó phải được nhất quán.

Kiểm tra /etc/aliasesxem liệu người dùng root có được gửi cho người khác không và thực hiện lại newaliaseslệnh.

Và nó nên hoạt động!


Có nên như 127.0.0.1vậy không?
Nate

Bạn có thể có bất kỳ địa chỉ nào trong 127.0.0.0/8, vì vậy 127.0.0.1 cũng hoạt động tốt
Dom

Tôi gặp vấn đề tương tự trong khi tôi chỉ muốn sử dụng rơle smarthost để gửi thư ra: "myhostname" phải là "localhost". Bất cứ điều gì khác bỏ qua các tập tin bí danh.
Alex

8

Nếu mydestinationtrống hoặc không chứa $myhostnamethì /etc/aliasessẽ bị bỏ qua vì postfix cho rằng email không phải là phân phối cục bộ và do đó sẽ không áp dụng các bí danh cục bộ. Vì vậy, hãy để mydestinationmặc định ( postconf -d mydestinationhoặc xóa nó khỏi main.cf) và nhật ký sẽ hiển thị to=<...>dưới dạng địa chỉ bí danh của bạn.


Tôi đang sử dụng một máy chủ thư bên ngoài và mydestinationphải trống. Nếu không, không có thư được gửi.
Corni

1

Trong một số trường hợp, (tức là nơi tất cả thư được chuyển tiếp đến một hệ thống bên ngoài), việc đặt MAILTObiến trong crontab của root thành một địa chỉ email thực sự dễ dàng hơn . Điều này sẽ khá nhiều bỏ qua giao hàng truyền thống để root và chỉ cần làm cho nó đi đến nơi bạn muốn.

# Root's crontab
MAILTO=someone@example.com
0 0 * * * /usr/bin/somescript

0

Dường như có một số vấn đề với việc mở /root/.forwardbằng daemon postfix, ít nhất là trên hệ thống cứng (tôi không đào sâu vào nó). Mặc dù:

# ls -ld / /root /root/.forward
dr-xr-xr-x. 18 root root  236 Dec  4 00:02 /
dr-xr-x--x. 13 root root 4096 Jan  8 17:45 /root
-rw-r--r--.  1 root root   30 Jan  8 14:51 /root/.forward

Con của postemon daemon không thể truy cập .forward:

7603  open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 16
7603  fstat(16, {st_mode=S_IFREG|0644, st_size=1227, ...}) = 0
7603  mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f86854fb000
7603  read(16, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 1227
7603  close(16)                         = 0
7603  munmap(0x7f86854fb000, 4096)      = 0
7603  geteuid()                         = 89
7603  getegid()                         = 89
7603  geteuid()                         = 89
7603  setresuid(-1, 0, -1)              = 0
7603  setresgid(-1, 0, -1)              = 0
7603  setgroups(1, [0])                 = 0
7603  lstat("/root/.forward", 0x7ffc03f84750) = -1 EACCES (Permission denied)

Tôi không có thời gian để nghiên cứu về nó ... Việc thêm mục để /etc/aliasestiếp theo là newaliaseshoạt động tốt.

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.