Minimal MTA yang mengirimkan email secara lokal (untuk cron)?

17

Di laptop saya, saya telah menyiapkan cron yang melakukan pekerjaan mingguan. Jika ada sesuatu untuk dilaporkan, saya ingin mendapat email untuk itu. Saat ini saya menggunakan KMail sebagai MUA yang dapat membaca email dari direktori Maildir di ~/.local/share/local-mail. Jadi, saya ingin surat lokal dikirim ke folder itu (dengan struktur Maildir).

Saya berharap bahwa program sederhana mati sudah ada yang memiliki sendmailantarmuka (sehingga echo "$REPORT" | mail -s "$SUBJECT" "$ME"dapat bekerja dengannya). Menginstal exim atau meneruskan surat ke server surat jarak jauh saya dianggap berlebihan.

Pertanyaannya: Cara paling sederhana untuk meneruskan semua surat dari server? tampaknya menargetkan penerusan jarak jauh yang tidak sesuai dengan kebutuhan saya (saya perlu pengiriman lokal). Utas Gentoo lama ini akhirnya membuat skrip lama di Perl. Tentunya harus ada program yang dipikirkan dengan baik, mati-sederhana?

Ada rekomendasi? Saya menggunakan Arch Linux.

Lekensteyn
sumber
Menganggap apa pun yang digunakan MTA Arch secara default sudah terinstal dan dijalankan, Anda bisa menggunakan saja [email protected]dan barang-barang itu akan berakhir /var/spool/mail/userX; Anda dapat memeriksa ini sendiri atau membuat akun baru untuk memeriksa dengan MUA Anda.
goldilocks
2
Beberapa googling membawa saya ke github.com/corecode/dma alias Dragonfly Mail Agent.
tripleee
@goldilocks Arch sebagai distribusi minimal tidak memiliki MTA yang diinstal secara default. /usr/bin/sendmailtidak ada dan keluaran cron berakhir pada /dev/null.
Lekensteyn
@ tripleee Saya temui itu tetapi mengabaikannya begitu saya melihat SMTP dan TLS disebutkan. Terima kasih telah menyebutkan, saya akan melihat lagi. tidak mendengarkan pada port 25 terdengar bagus untuk saya.
Lekensteyn
@ tripleee Sayangnya, dma tidak mendukung Maildir, hanya direktori spool /var/spool/mail.
Lekensteyn

Jawaban:

7

Karena saya tidak dapat menemukan program kecil yang ada, saya memutuskan untuk menulis program saya sendiri. Awalnya, saya datang dengan:

#!/bin/bash
# Simple sendmail
# filename per spec at http://cr.yp.to/proto/maildir.html
rand=$((RANDOM % 1000))
msgname=$(date +%s).P$$R$rand.$(hostname | tr '/:' '\057\072')

# Safety measure: do not overwrite existing mail
set -o noclobber

cat > ~peter/".local/share/local-mail/inbox/new/$msgname"

Itu berhasil ... kecuali jika pengguna yang menjalankan skrip bukan "peter". Pengganti ide ini adalah program "kecil" C, femtomail . Dari README-nya:

femtomail - MDA minimal dengan dukungan Maildir

femtomail adalah Agen Pengiriman Surat (MDA) minimal untuk surat lokal. Mail diterima dari input standar dan ditempatkan di kotak Maildir pengguna. Perangkat lunak ini dimaksudkan untuk digunakan pada mesin satu pengguna.

Pengiriman jarak jauh, daemonisasi, verifikasi pengirim, dll. Tidak diterapkan dan tidak akan dilaksanakan karena kompleksitasnya. femtomail tidak ditulis karena perangkat lunak surat tidak ada, tetapi karena perangkat lunak yang ada terlalu besar untuk tugas sederhana mengirimkan surat cron kepada pengguna lokal .

Alur kerja femtomail:

  1. Ubah proses pengguna dan grup.
  2. Buat file baru dengan nama file unik di direktori mail.
  3. Tulis Receivedtajuk ke file.
  4. Pass data dari input standar ke file.
  5. Keluar.

Kode sumber dan instruksi pemasangan tersedia di https://git.lekensteyn.nl/femtomail/ .

Lekensteyn
sumber
1
alangkah baiknya jika femtomail dapat: membaca user @ localhost (atau hostname dari host lokal) dan mengatur pengguna tersebut, menulis email baik di home dir atau di suatu tempat standar. akan membutuhkan bit setuid.
gauteh
@gauteh Itu sudah lebih maju dan mungkin tidak untuk digunakan pada mesin pengguna tunggal. Lebih banyak fitur berarti kode lebih besar dan peluang bug lebih besar. Apa kasus penggunaan Anda?
Lekensteyn
pasti, untuk menggunakannya sebagai agen pengiriman surat lokal lengkap, antara pengguna - tanpa barang-barang yang dikodekan.
gauteh
@gauteh Saya pikir Anda lebih baik dengan MDA yang lebih lengkap seperti Dovecot untuk kasus penggunaan itu. Anda bebas untuk menambal femtomail untuk kasus penggunaan Anda, dan mungkin bahkan mengirim PR jika orang lain tertarik.
Lekensteyn