Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

On my laptop, I have set up a cron that performs a weekly job. If there is something to report, I would like to get an e-mail for it. Right now I am using KMail as MUA which is able to read mail from the Maildir directory at ~/.local/share/local-mail. Thus, I want local mail to be delivered to that folder (with a Maildir structure).

I was hoping that a dead simple program already exist that has a sendmail interface (such that echo "$REPORT" | mail -s "$SUBJECT" "$ME" can work with it). Installing exim or forwarding mail to my remote mailserver is considered overkill.

The question Simplest way of forwarding all mail from server? seems to target remote forwarding which does not suit my needs (I need local delivery). This old Gentoo thread ended up in crafting an old script in Perl. Surely there must exist a well-thought, dead-simple program?

Any recommendations? I am using Arch Linux.

share|improve this question
    
Presuming whatever MTA Arch uses by default is installed and running, you could just use userX@localhost.localdomain and the stuff should end up in /var/spool/mail/userX; you can check this yourself or create a new account to check with your MUA. –  goldilocks Jul 7 '13 at 16:44
1  
Some googling brought me to github.com/corecode/dma aka Dragonfly Mail Agent. –  tripleee Jul 7 '13 at 17:05
    
@goldilocks Arch being a minimal distribution does not have a MTA installed by default. /usr/bin/sendmail does not exist and cron output end up in /dev/null. –  Lekensteyn Jul 7 '13 at 20:17
    
@tripleee I encountered that but ignored it once I saw SMTP and TLS being mentioned. Thanks for mentioning, I will have a look again. does not listen on port 25 sounds good to me. –  Lekensteyn Jul 7 '13 at 20:18
    
@tripleee Unfortunately, dma does not support Maildir, only spool dirs in /var/spool/mail. –  Lekensteyn Jul 8 '13 at 13:40

1 Answer 1

up vote 3 down vote accepted

Since I could not find an existing, small program, I decided to write my own one. Originally, I came up with:

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

That worked... except if the user executing the script is not "peter". The successor of this idea is a "small" C program, femtomail. From its README:

femtomail - minimal MDA with Maildir support

femtomail is a minimal Mail Delivery Agent (MDA) for local mail. Mail is accepted from standard input and placed in a Maildir box of a user. This software is intended for use on a single-user machine.

Remote delivery, daemonizing, sender verification, etc. is not implemented and won't be implemented due to its complexity. femtomail is not written because mail software did not exist, but because existing software were too large for the simple task of delivering cron mail to the local user.

The workflow of femtomail:

  1. Change the process user and group.
  2. Create a new file with a unique filename in the mail directory.
  3. Write a Received header to the file.
  4. Pass data from standard input to the file.
  5. Exit.

The source code and installation instructions are available at https://git.lekensteyn.nl/femtomail/.

share|improve this answer
    
it would be great if femtomail could: read user@localhost (or hostname of local host) and setuid that user, write the email either in home dir or somewhere standard. would require setuid bits. –  gauteh 2 days ago
    
@gauteh That is already more advanced and probably not for use on a single-user machine. More features means larger code and a greater chance of bugs. What is your use case? –  Lekensteyn 2 days ago
    
definetely, to use it as a complete local mail delivery agent, between users - without hardcoded stuff. –  gauteh yesterday
    
@gauteh I think you are better off with a more complete MDA such as Dovecot for that use case. You are free to patch femtomail for your use case though, and maybe even send a PR in case others are interested. –  Lekensteyn yesterday

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.