Start > Algorithmik > lsm

lsm: Lokaler Ersatz für Sendmail

lsm ist ein leichtgewichtiger Ersatz für sendmail, um Nachrichten an lokale Benutzer zu schicken.

  1. Beschreibung
  2. Systemvoraussetzungen
  3. Download
  4. Installation
  5. Aufruf und Gebrauch
  6. Deinstallation
  7. Verweise
  8. Quelltext
  9. Nutzung

Beschreibung

Wer Nachrichten von fehlgeschlagenen Cron-Jobs empfangen oder die eigenen Webmailer lokal testen will, kennt das Problem: Wer opfert gerne 11.264 KB Platten­platz für einen MTA wie sendmail und 72.704 KB für das Paket mailutils mit einem MUA, nur um ab und zu eine Warn-Mail vom eigenen System zugestellt zu bekommen? Das ist das Gegenteil von einem schlanken System und unnötig, da 99 % der Mail-Funktio­nalität nicht genutzt wird.

Aus diesem Grund gibt es lsm, das nur 14 KB groß ist und E-Mails rein an lokale Nutzer ausliefert. Es ersetzt hierin MTA und MDA und bietet sich für Desktop-Rechner oder Home-Server an; für Einsätze unter Produktiv-Servern ist das Programm nicht gedacht:

MUA->MTA->MTA->MDA->InboxMUA->lsm->Inbox

lsm nimmt dazu in der Rolle eines MTA eine (meist gemäß RFC-2822 [1] vorformatierte) Nachricht von stdin entgegen und stellt sie als MDA im Mbox-Format [2] unter /var/mail/ in die Inbox des Adressaten, von wo sie später mit mail abgeholt werden kann:

jane$ ls -la /var/mail
drwxrwsr-x  2 root mail 4096 Feb  4 21:22 .
drwxr-xr-x 11 root root 4096 Sep  7 16:30 ..
-rw-------  1 jane mail  149 Feb  4 21:45 jane
-rw-------  1 sue  mail   90 Feb  4 21:24 sue
-rw-------  1 root mail  151 Feb  4 21:45 root

Es versteht die wichtigsten Aufruf­optionen von sendmail und kann wie dieses direkt von der Kommando­zeile eine einfache Nachricht senden (das Shell-Script mailtest im Installations­paket von lsm nutzt diese Funktion). Ermittelt lsm keinen Empfänger, schickt es die Nachricht an root. Empfänger können jedoch wie bei sendmail durch einen Eintrag in der Datei /etc/aliases umgesteuert werden (kein Aufruf von newaliases erforderlich). Im nachfolgenden Beispiel werden alle Nachrichten an root und sue an jane umgeleitet:

# /etc/aliases
root: jane
sue: jane

Hierbei sind auch Joker möglich, so daß z. B. alle Nachrichten – egal an wen – zu einem anderen Nutzer umgeleitet werden können:

# /etc/aliases
*: jane

Der Empfänger wird über die Kommandozeile festgelegt oder durch lsm mit der Option -t aus der Nachricht (To:) ermittelt. Ohne Absender auf der Kommandozeile wird MAILER-DAEMON als Absender eingesetzt. Wird die Nachricht direkt auf der Kommando­zeile eingegeben, kann sie mit einem einzelnen Punkt auf einer Zeile beendet werden; mit der Option -i ist die Nachricht hingegen nur durch EOT (Ctl-D) beendbar. Die Option -? druckt eine Hilfe:

lsm/0.2 - Local Sendmail Replacement
Usage: sendmail [-itv?] [-oi] [-bm] [-f sender] [recipient]
 -bm Ignored
 -i  Ignore single dots in message
 -oi Like -i
 -t  Scan message for recipient
 -v  Verbose
 -?  This help

Im Archiv enthalten sind zudem 3 (optionale) Shell-Skripte:

1. mailtest schickt an den aktuellen Benutzer eine Test­nachricht.

2. mailcheck meldet neue Nachrichten bei textbasierten Logins: You have mail. Der Aufruf vom Skript muß dazu in die Startdatei ~/.profile eingetragen werden.
Anm: Bei aktuellen Systemen mit PAM wird mailcheck nicht benötigt, da diese Meldung bereits system­seitig durch den Eintrag session optional pam_mail.so standard in der Datei /etc/pam.d/login erfolgt.

3. mail zeigt Nachrichten der Inbox /var/mail/$USER an und verschiebt diese danach in die lokale Mailbox ~/mbox. Damit bildet es die Empfangs­funktion eines MUA nach:

lsm->mail

Systemvoraussetzungen

Das Programm benötigt Linux. Falls die Gruppe mail nicht existiert, ist sie anzulegen, z. B. mit sudo groupadd mail oder sudo addgroup mail. Existieren make oder gcc nicht, können sie mit apt install build-essential nach­installiert werden.

Download

Linux: lsm.tgz [3 KB, 64 bit, MD5]

Empfehlenswert ist anschließend die Prüfung auf Virusfreiheit und Authentizität.

Installation

Das Archiv wird in ein beliebiges Benutzer­verzeichnis ausgepackt:

root# tar -xvf lsm.tgz
lsm.c
mail
mailcheck
mailtest
makefile

In diesem Verzeichnis wird mit make install die Installation gestartet (dafür braucht es administrative Rechte, also entweder sudo make install, oder su - und dann make install).

Die Installation erstellt das Programm lsm und kopiert es nach /usr/local/bin. Zudem wird eine Verknüpfung /usr/sbin/sendmail zum Programm angelegt, da andere Programme sendmail genau mit diesem Pfad aufrufen. Das Programm bekommt bei der Erstellung die Rechte SETUID und SETGID, um die Inboxen für andere Benutzer so anzulegen, daß jeder Benutzer nur seine Inbox lesen kann, sowie CHOWN und FOWNER, um falsche Berechtigungen der Inboxen ggf. zu korrigieren:

root# make install
# Compiling lsm ...
cc -s -Os -olsm lsm.c
chown root:mail lsm mail mailcheck mailtest
setcap cap_setuid,cap_setgid,cap_chown,cap_fowner=ep lsm
# Installing lsm ...
mv lsm /usr/local/bin/
cp -p mail mailcheck mailtest /usr/local/bin/
ln -fs /usr/local/bin/lsm /usr/sbin/sendmail

Ein Test mit dem Shell-Skript mailtest, ob das Programm funktioniert:

root# mailtest
Delivering mail from MAILER-DAEMON to inbox /var/mail/root.
Now run 'mail' to see if this message found its way into your inbox ...

Das Shell-Skript mail zeigt die Inbox an. Da es less nutzt, ist es mit q zu quittieren:

root# mail
From MAILER-DAEMON Thu Feb  6 19:31:28 2024
Subject: Test

Hello root,
if you can read this it means
lsm was successfully installed.

q
New mails moved from /var/mail/root to ~/mbox.

Aufruf und Gebrauch

lsm wird im Regelfall nicht direkt vom Nutzer aufgerufen, sondern von Cron-Jobs oder Web-Mailern. Wer dennoch direkt anderen Nutzern eine Nachricht schreiben will, kann dies dennoch tun (Ende mit Punkt):

jane$ /usr/sbin/sendmail -v -fjane sue
Hallo Sue,
dies ist eine Textnachricht.
Viele Grüße
Jane
.
Delivering mail from jane to inbox /var/mail/sue.

mail hingegen wird durch Benutzer aufgerufen, um die Post abzuholen:

login: sue
password: ****
You have mail.
sue$ mail
From jane Thu Feb  6 20:24:06 2024
Hallo Sue,
dies ist eine Textnachricht.
Viele Grüße
Jane

q
New mails moved from /var/mail/sue to ~/mbox.

Deinstallation

Über make uninstall erfolgt die Deinstallation. Es werden wie bei der Installation adminstrative Rechte benötigt.

Verweise

  1. IETF: RFC 2822 – Internet Message Format
  2. IETF: RFC 4155 – The application/mbox Media Type

Quelltext

lsm.c

Nutzung

Hinweise zur Nutzung.

© 2024, 2025 asdala.de: Kon­takt & Daten­obhut