Bagaimana saya bisa mengirim / var / mail / root lagi?

12

Melalui beberapa kesalahan konfigurasi, saya memiliki banyak email di / var / mail / root dan / var / mail / www-data

Bagaimana saya bisa "mengulang" file-file ini dan mengirim setiap email lain kali?

Maks
sumber

Jawaban:

17

formail , bagian dari procmail (dan mungkin sudah tersedia di sistem Anda) dapat mengambil kotak surat, membaginya menjadi pesan, dan kemudian menjalankan perintah pada masing-masing. Dari halaman manual:

   -s   The input will be split up into separate mail messages, and  piped
        into  a  program  one  by  one (a new program is started for every
        part).  -s has to be the last option specified, the first argument
        following  it  is  expected to be the name of a program, any other
        arguments will be passed along to it.  If you  omit  the  program,
        then  formail  will  simply  concatenate the split mails on stdout
        again.  See FILENO.

Jadi Anda dapat melakukan apa yang saya pikir Anda inginkan seperti ini:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root
larsks
sumber
3
Tetapi juga apa yang kriss katakan kembali: menyapa; solusi ini mengasumsikan bahwa Anda telah memperbaiki alias lokal Anda atau sesuatu untuk mengirim pesan ke tempat lain selain kembali ke / var / mail / root. Anda dapat, misalnya, melakukan "formail -s / usr / sbin / sendmail -oi [email protected]" untuk mengarahkan ulang semua pesan.
larsks
dengan asumsi bahwa www-data dan root sekarang dikonfigurasikan dengan benar, sesuatu seperti "untuk foo in ls /var/mail; lakukan formail -s / usr / sbin / sendmail -oi $ foo <./$foo; selesai" harus mengulang setiap file dan mengirimkan secara lokal ..
Tom H
3
mutt -f /var/mail/www-data

Kemudian dalam mutt ...

T.*
;b

T memasukkannya ke mode penandaan, dan. * Menandai semua pesan. Tanda titik koma menerapkan perintah berikutnya untuk semua pesan yang ditandai, dan akhirnya b "memantulkan" pesan ke alamat yang diminta.

Dari ingatan, saya pikir juga

D.*

atau

T.*
;d

Kemudian akan mengosongkan kotak surat.

James Green
sumber
0

File kotak surat / var / spool / mail / xxx unix adalah file teks sederhana tempat pesan email disimpan secara berurutan. Setiap pesan email dimulai dengan baris "Dari" (yang bukan bagian dari pesan) dengan pengirim dan tanggal penerimaan, lalu Anda mendapatkan header surat, kemudian badan surat.

Pada dasarnya Anda hanya dapat mengulang pada file yang mendeteksi Dari baris tersebut dan mengekstrak setiap pesan kemudian mengirimnya menggunakan alat-alat seperti modul python smtp atau perl Net :: modul SMTP dari cpan.

Jika target adalah kotak surat lokal lain, Anda bisa menambahkan pesan (termasuk baris Dari) ke sana. Anda bahkan bisa menambahkan seluruh kotak surat root ke kotak surat lain jika Anda tidak peduli juga mendapatkan pesan yang benar-benar ditargetkan untuk di-root.

Saya harus memiliki beberapa skrip yang melakukan itu dan akan memposting contoh jika Anda mau.

Masalahnya mungkin untuk mendapatkan target pesan yang sebenarnya karena jika mereka berakhir di root mailbox mereka mungkin ditargetkan untuk melakukan root sejak awal?

Kriss
sumber