Sendmail Smarthost Howto


Von Thomas Bader (thomasb auf trash.net)


sendmail

Wenn Du Sendmail hast und deine Mails ueber trash.net loswerden moechtest, dann wirst Du in den meisten Faellen Sendmail neu kompilieren muessen. Du brauchst dazu einige zusaetzliche Bibliotheken. Du brauchst:

   * cyrus-sasl
   * sfio
   * libdb2
   * OpenSSL

Wenn Du Debian als Distribution einsetzt, reicht ein

  apt-get install libsasl7 libsasl-dev libsasl-modules-plain
  libssl-dev equivs libdb2 libdb2-dev libdb2-util procmail
  sfio1999 sfio-dev

Bei anderen Distributionen oder Unices musst Du dir die Bibliotheken selber kompilieren. Ferner benoetigst Du noch eine Gruppe, die smmsp heisst. Hinzufuegen kannst Du die entweder mit groupadd oder dem Konfigurationstool deiner Distribution.

Wenn Du diese Vorarbeiten erfuellt hast, musst Du den Quellcode von Sendmail holen:

  cd /usr/src
  wget ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.12.1.tar.gz
  tar xvfz sendmail.8.12.1.tar.gz
  ln -s sendmail-8.12.1/ sendmail
  cd sendmail

Nun bist Du im Quellcode-Verzeichnis von Sendmail. Wechsle in das Unterverzeichnis "devtools/Site" und erstelle darin eine Datei namens "site.config.m4", die folgenden Inhalt halt:

  #
  # Stuff to use authentication
  APPENDDEF(`confENVDEF', `-DSASL')
  APPENDDEF(`conf_sendmail_LIBS', `-lsasl')
  #
  # Stuff to use sfio
  define(`confSTDIO_TYPE', `portable')
  APPENDDEF(`confENVDEF', `-DSFIO')
  APPENDDEF(`confLIBS', `-lsfio')
  #
  # Stuff to use TLS
  APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS')
  APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')

Wenn Du diese Datei erstellt hast, gibst Du im Toplevel-Verzeichnis (/usr/src/sendmail) folgendes ein:

  ./Build
  make install

Damit wird Sendmail kompiliert und installiert. Ein bereits bestehender MTA wird dabei ueberschrieben. Eventuell ist es besser, wenn Du diese Aenderung im Packet-Management deiner Distribution festhaelst. Falls Du Debian hast, machst Du vor dem "make install" noch folgendes:

 cd /usr/src
 equivs-build mta.ctl
 dpkg -P --force-depends sendmail
 dpkg -i mta-dummy_1.0_all.deb

Wobei mta.ctl folgenden Inhalt hat:

  Section: mail
  Package: mta-dummy
  Provides: mail-transport-agent
  Description: MTA dummy package
   This package provides dpkg with the information that
   there is a local MTA installed.
   .
   Installing mutt, alpine etc. won't bug you to
   install sendmail any more

Nachdem Du Sendmail installiert hast, sind noch folgende Nacharbeiten zu erledigen:

  mkdir /var/spool/mqueue
  mkdir /var/spool/mqueue/df
  mkdir /var/spool/mqueue/qf
  mkdir /var/spool/mqueue/xf

  chown smmsp:smmsp /var/spool/clientmqueue
  chmod 770 /var/spool/clientmqueue
  chmod 700 /var/spool/mqueue/

Und ein Init-Skript solltest Du auch erstellen, falls Du noch keines hast. Mein Init-Skript sieht zB. so aus:

  #!/bin/sh
  FLAGS="defaults 23"
  test -f /usr/sbin/sendmail || exit 0

  case "$1" in
    start)
      echo -n "Starting MTA:"
      echo -n " sendmail"
      /usr/sbin/sendmail -L sm-mta -bd -q1h
      /usr/sbin/sendmail -L sm-msp-queue -Ac -q30m
      echo "."
    ;;

    stop)
      echo -n "Stopping MTA:"
      echo -n " sendmail"
      killall /usr/sbin/sendmail
      echo "."
    ;;

    restart|force-reload)
      $0 stop
      sleep 2
      $0 start
    ;;

    *)
echo -n "Usage: start, stop, restart, force-reload exit 1 ;; esac exit 0

Dieses Skript musst Du dann an die entsprechenden Orte verlinken, dies haengt jedoch von deiner Distribution ab. Unter Debian reicht ein einfaches

  update-rc.d sendmail defaults

Zu guter letzt musst Du noch eine .mc-Datei erstellen. Falls Du noch keine hast, kannst Du in der Sendmail beliegenden Dokumentation erfahren, wie Du eine erstellst. Auf jeden Fall muss das .mc-File folgende Anweisungen enthalten:

  define(`confAUTH_MECHANISMS', `PLAIN LOGIN')dnl
  TRUST_AUTH_MECH(`PLAIN LOGIN')dnl

  FEATURE(`authinfo', `hash /etc/mail/authinfo')dnl

  define(`SMART_HOST', `smtp:mail.trash.net')dnl

Zu guter Letzt musst Du noch die Datei /etc/mail/authinfo erstellen. Sie enthaelt folgende Zeile:

  AuthInfo:mail.trash.net "U:$USER" "P:$PASS" "R:mail.trash.net" "M:PLAIN"

Wenn Du die Datei mit

  makemap hash authinfo < authinfo

in ein fuer Sendmail lesbares Datenbankformat uebersetzt hast, kannst Du Sendmail neu starten und deine Mails werden ueber trash.net geschickt.