Yerel olarak posta gönderen en az MTA (cron için)?


17

Dizüstü bilgisayarımda haftalık iş yapan bir cron kurdum. Bildirilecek bir şey varsa, bunun için bir e-posta almak istiyorum. Şu anda KMail'i Maildir dizinindeki postaları okuyabilen MUA olarak kullanıyorum ~/.local/share/local-mail. Böylece, yerel postanın bu klasöre teslim edilmesini istiyorum (Maildir yapısı ile).

Bir sendmailarayüze sahip olan basit bir programın zaten mevcut olmasını umuyordum (bununla echo "$REPORT" | mail -s "$SUBJECT" "$ME"çalışabilir). Uzak posta sunucuma exim yükleme veya posta iletme aşırı doldurulmuş olarak kabul edilir.

Soru Tüm postaları sunucudan iletmenin en kolay yolu? (yerel teslime ihtiyacım var) benim ihtiyaçlarına uygun olmayan uzaktan yönlendirme hedefliyor gibi görünüyor. Bu eski Gentoo ipliği Perl'de eski bir senaryo hazırladı. Elbette iyi düşünülmüş, basit bir program olmalı mı?

Herhangi bir tavsiye? Arch Linux kullanıyorum.


MTA Arch varsayılan yüklenmiş ve çalışıyor tarafından ne kullanıyorsa varsayarsak, sadece kullanabilirsiniz userX@localhost.localdomainfalan kadar bitmeli /var/spool/mail/userX; bunu kendiniz kontrol edebilir veya MUA'nızla kontrol etmek için yeni bir hesap oluşturabilirsiniz.
goldilocks

2
Bazı googlingler beni github.com/corecode/dma, yani Dragonfly Mail Agent'a getirdi .
tripleee

@goldilocks Minimum dağıtım olan Arch'a varsayılan olarak bir MTA yüklenmez. /usr/bin/sendmailmevcut değildir ve cron çıkışı sona erer /dev/null.
Lekensteyn

@tripleee Bu karşılaştım ama SMTP ve TLS bahsedildi gördükten sonra onu görmezden geldi. Bahsettiğiniz için teşekkürler, tekrar bakacağım. 25 numaralı bağlantı noktasını dinlemiyor bana iyi geliyor.
Lekensteyn

@tripleee Ne yazık ki, dma Maildir'i desteklemiyor, sadece biriktirme dirs'lerini içeri alıyor /var/spool/mail.
Lekensteyn

Yanıtlar:


7

Mevcut küçük bir programı bulamadığım için kendi programımı yazmaya karar verdim. Başlangıçta, ben geldim:

#!/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"

Bu çalıştı ... komut dosyası yürüten kullanıcı "peter" dışında hariç. Bu fikrin ardılı "küçük" bir C programı, femtomail . README'sinden:

femtomail - Maildir desteğiyle minimal MDA

femtomail, yerel postalar için minimum bir Posta Teslim Aracısıdır (MDA). Posta, standart girdiden kabul edilir ve kullanıcının Maildir kutusuna yerleştirilir. Bu yazılım tek kullanıcılı bir makinede kullanılmak üzere tasarlanmıştır.

Uzaktan dağıtım, arka plan programı, gönderen doğrulaması vb. Uygulanmaz ve karmaşıklığı nedeniyle uygulanmaz. femtomail, posta yazılımı olmadığı için değil, varolan yazılımın yerel kullanıcıya cron postası teslim etme görevi için çok büyük olduğu için yazılmamıştır .

Femtomail iş akışı:

  1. İşlem kullanıcısını ve grubunu değiştirin.
  2. Posta dizininde benzersiz bir dosya adına sahip yeni bir dosya oluşturun .
  3. ReceivedDosyaya bir başlık yazın .
  4. Standart girişten dosyaya veri aktarın.
  5. Çıkış.

Kaynak kodu ve kurulum talimatlarını https://git.lekensteyn.nl/femtomail/ adresinde bulabilirsiniz .


1
femtomail: user @ localhost (veya local host'un ana bilgisayar adını) okuyabilir ve o kullanıcıyı belirleyebilirse, e-postayı home dir veya standart bir yere yazabilirse harika olur. setuid bitleri gerektirir.
gauteh

@gauteh Bu zaten daha gelişmiş ve muhtemelen tek kullanıcılı bir makinede kullanım için değil. Daha fazla özellik, daha büyük kod ve daha büyük hata şansı anlamına gelir. Kullanım durumunuz nedir?
Lekensteyn

Kesinlikle, kullanıcılar arasında - sabit kodlanmış şeyler olmadan tam bir yerel posta dağıtım aracısı olarak kullanmak.
gauteh

@gauteh Bu kullanım durumu için Dovecot gibi daha eksiksiz bir MDA ile daha iyi olduğunuzu düşünüyorum. Kullanım durumunuz için femtomail'i yamalamakta özgürsünüz ve hatta başkalarının ilgilenmesi durumunda bir PR bile gönderebilirsiniz.
Lekensteyn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.