Linux mail oppsett

Dette er mitt oppsett av sendmail på lokal server. Jeg opererere med det fiktive domenenavnet acme.no. Følgende funksjoner er ønsket:

Jeg har foreløpig ikke fått «address rewriting» samt øyeblikkelig levering av lokal mail til å fungere. (Det fikk jeg derimot til med postfix.) Men ellers fungerer det tilfredsstillende, og siden lokal mail ikke forekommer så ofte (mellom brukere) er det vesentlige allikevel på plass.

Dette dokumentet er laget med grunnlag i sendmail address rewriting mini-HOWTO, samt artikkel i Linux Journal (april 2001). Se også mine qmail-notater hvis du har qmail-klienter i tillegg (første avsnitt).

Opplysninger om mail-konti

/etc/sendmail.mc

Sørg for at disse setningene finnes i sendmail.mc.

  define(`ALIAS_FILE',`/etc/aliases')
  MASQUERADE_AS(myisp.net)
  FEATURE(masquerade_envelope)
  FEATURE(limited_masquerade)       # LJ
  FEATURE(genericstable,`hash -o /etc/mail/genericstable')
  GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
  define(`SMART_HOST',`smtp:mail.myisp.net')
  define(`confCON_EXPENSIVE',True)
  define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')
  MAILER(local)
  MAILER(smtp)
MAILER kan også være procmail i stedet for local (vil jeg tro). Generer /etc/sendmail.cf fra denne sendmail.mc med kommandoene
  m4 sendmail.mc > _sendmail.cf
  mv -f _sendmail.cf sendmail.cf
(bruk midlertidig filnavn for å hindre at sendmail kan lese delvis genererte konfigurasjonfil(er).

Endre/se etter følgende i den nye sendmail.cf

  DMmyisp.net
  DSsmtp:mail.myisp.net
(i 'Options' seksjonen):
  O HoldExpensive=True
Let opp følgende sekvens i fila (nær slutten av fila):
  #####  @(#)smtp.m4      8.38 (Berkeley) 5/19/1998  #####
  Msmtp,          P=[IPC], F=mDFMuXe, S=11/31, R=21, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=IPC $h
  Mesmtp,         P=[IPC], F=mDFMuXae, S=11/31, R=21, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=IPC $h
  Msmtp8,         P=[IPC], F=mDFMuX8e, S=11/31, R=21, E=\r\n, L=990,
                  T=DNS/RFC822/SMTP,
                  A=IPC $h
Legg til 'e' (expensive) Flag i 'F=...' (flags) for smtp. Nå skal sendmail ikke sende smtp mail uten videre.

/etc/mail/service.switch

Denne filen kan se slik ut:

  aliases files
  passwd files
  hosts files
nis, nisplus og dns (spesielt) skal ikke brukes!

/etc/sendmail.cw

Denne filen inneholder alle navn som lokal mailserver skal handle mail for, og kan se slik ut:

  # sendmail.cw - include all aliases for your machine here.
  localhost
  localhost.localdomain
  mail.acme.net
  server.acme.net
  pc1.acme.net
  pc2.acme.net

/etc/mail/genericstable

Legg inn lokale brukernavn som skal mappes om til ISP-adresser:

  arne    acc@myisp.net
  laban   lbn@myisp.net
Kjør makemap -r hash genericstable.db < genericstable

/etc/mail/genericsdomain

  acme.net

/etc/mail/access

Legg til klienter som mail.acme.net skal relay'e mail for:

  # Check the /usr/doc/sendmail-8.9.3/README.cf file for a description
  # of the format of this file. (search for access_db in that file)
  # The /usr/doc/sendmail-8.9.3/README.cf is part of the sendmail-doc
  # package.
  # by default we allow relaying from localhost...
  localhost.localdomain           RELAY
  localhost                       RELAY
  127.0.0.1                       RELAY
  # and now my local clients...
  192.168.5.1                     RELAY
  192.168.5.2                     RELAY
Generer hash-fil: makemap hash access.db < access

/usr/sbin/sendmail

Oppstartfilen /etc/rc.d/init.c/sendmail må endres fra

  /usr/sbin/sendmail -bd -q15m
til
  /usr/sbin/sendmail -bd -os

For å sende mail fra køen til ISP, kjøres denne kommandoen fra et (cron-) script:

  /usr/sbin/sendmail -q -v

Her er noen rådata

Jeg har ikke eget domenenavn. Derfor har jeg forsøkt med virtusertable og genericstable. Jeg trodde virtusertable skulle skrive om sin key til value for input addresser, men det ser ikke ut til at noe skjer. Problmet mitt er at hvis jeg prøver reply på lokal mail, prøver den å sende via online.no istedet for å levere lokalt med én gang. Hvordan skal jeg gjøre dette?

Virtusertable input ser slik ut:

  sgulbra@online.no       sg
jentakle@hotmail.com    jens

mc-filen jeg bruker for å lage sendmail.cf ser slik ut:

  divert(-1)
  include(`../m4/cf.m4')
  define(`confDEF_USER_ID',``8:12'')
  OSTYPE(`linux')
  FEATURE(always_add_domain)
  FEATURE(genericstable)
  FEATURE(virtusertable)
  FEATURE(use_cw_file)
  FEATURE(local_procmail)
  FEATURE(accept_unresolvable_domains)
  MAILER(procmail)
  MAILER(smtp)

Genericstable input ser slik ut:

  sg                              sgulbra@online.no
  jens                            jentakle@hotmail.com

db-filene lages med "makemap hash virtusertable < virtusertable.input" og legges på /etc/. Tilsvarende for genericstable.

I sendmail.cf står det:

  Kgenerics hash -o /etc/genericstable
  Kvirtuser hash -o /etc/virtusertable

Skulle gjerne også fått monsteret til å ikke aksessere nettet verken for DNS eller for å levere post (jeg har et modem som ringer automatisk) før jeg gjør "sendmail -q", med unntak av mail innen lokalnettet. Men det må bli neste fase i prosjektet.