Dapatkan postfix untuk meneruskan email root


13

Saya memiliki server Ubuntu yang menjalankan postfix. Ini bukan server email untuk domain saya.

Setiap kali tugas cron dijalankan untuk root, mail output tidak dikirim secara lokal, melainkan dikirim ke root@mydomain.com melalui server mail utama. Ini bukan yang saya inginkan.

Saya ingin mail untuk root dikirim secara lokal atau diteruskan ke anothermail@anotherdomain.com.

Saya sudah mencoba memodifikasi keduanya ~root/.forwarddan /etc/aliases(dan menjalankan newaliases), tetapi tidak ada yang membantu (saya kira file-file ini hanya diperiksa ketika postfix mencoba mengirimkan email secara lokal).

Apa yang dapat saya?

Ini adalah /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

Edit:

Saat mengirim email ke root, ini masuk ke /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

Nama "ct" adalah nama pengguna saya. Saya membuat teks di atas melalui perintah ini:

echo test | mail -s test root

Isi dari /etc/mailnameadalah:

mydomain.com

Isinya /etc/aliasesadalah:

root: anothermail@anotherdomain.com
postmaster:    root

di mana anothermail@anotherdomain.com adalah tempat saya ingin meneruskan email root.

Konten /etc/hostssebenarnya sedikit mengejutkan saya:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

di mana "mylinux" adalah nama host dari sistem operasi host di mana linux1 berjalan sebagai mesin virtual. Saya tidak yakin bagaimana "mylinux" masuk ke sana. (Tapi bisakah ini benar-benar menjadi alasan masalah saya?)


Bisakah Anda memberi kami log postfix Anda ketika Anda mengirim email ke root?
Dom

Saya telah melakukannya dalam edit ke posting asli.
oz1cz

Bisakah Anda memberi kami file / etc / mailname dan / etc / aliases Anda? Periksa apakah / etc / hosts mengandung linux1.mydomain.com yang ditugaskan ke 127.0.1.1
Dom

Saya telah menambahkan informasi ke pos asli.
oz1cz

Menurut log Anda, surat telah dikirim dengan benar ke relai smtp ISP Anda. Saya akan meminta mereka (isp) untuk memeriksa log my.isps.relayhost.com [<IP address dihilangkan>] untuk mengetahui petunjuk (antispam, error, ...) tentang masalah tersebut.

Jawaban:


13

Sebagai ususal, periksa log Anda.

Dalam kasus Anda, daemon postfix berpikir mail bukan untuknya dan mengirimkannya tanpa menggunakan /etc/aliases

Pertama periksa /etc/hostsfile Anda : itu harus memiliki nama mesin Anda yang sesuai dengan 127.0.1.1: 127.0.1.1 linux1.mydomain.com linux1

Periksa /etc/mailnamejuga, dan itu harus konsisten.

Periksa Anda /etc/aliasesuntuk melihat apakah pengguna root dikirim ke orang lain, dan ulangi newaliasesperintahnya.

Dan itu seharusnya berhasil!


Haruskah begitu 127.0.0.1?
Nate

Anda dapat memiliki alamat apa saja di 127.0.0.0/8, jadi 127.0.0.1 juga berfungsi dengan baik
Dom

Saya memiliki masalah yang sama sementara saya hanya ingin menggunakan relay smarthost untuk mengirim email: "myhostname" harus "localhost". Ada lagi yang melewatkan file alias.
Alex

8

Jika mydestinationkosong atau tidak mengandung $myhostnamemaka /etc/aliasesakan diabaikan karena postfix menganggap email itu bukan pengiriman lokal dan karenanya tidak akan menggunakan alias lokal. Jadi, biarkan mydestinationdi default ( postconf -d mydestinationatau hapus dari main.cf) dan log harus menunjukkan to=<...>sebagai alamat alias Anda.


Saya menggunakan server surat eksternal dan mydestinationharus kosong. Kalau tidak, tidak ada surat yang dikirim.
Corni

1

Dalam beberapa keadaan, (yaitu saat semua email dikirimkan ke sistem eksternal), lebih mudah untuk mengatur MAILTOvariabel di crontab root ke alamat email asli. Ini seharusnya mem-bypass pengiriman tradisional ke root dan membuatnya pergi ke tempat yang Anda inginkan.

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

0

Tampaknya ada beberapa masalah dengan pembukaan /root/.forwarddaemon postfix, setidaknya pada sistem yang dikeraskan (saya tidak menggali lebih dalam). Meskipun:

# 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

Anak daemon postfix tidak dapat mengakses .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)

Saya tidak punya waktu untuk menggali ... Menambahkan entri untuk /etc/aliasesdiikuti oleh newaliasesberfungsi dengan baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.