Dette er mitt oppsett av postfix
i mitt lokalnett.
Jeg opererer med det fiktive domenenavnet acme.net
.
Følgende funksjoner er ønsket:
Jeg har hittil kjørt sendmail
på server og
qmail
på arbeidstasjon, men har nå konvertert
til postfix
begge steder og dette dokumentet viser hvordan
jeg har konfigurert begge deler. (Installasjon av postfix
/
fjerning av sendmail
er beskrevet nedenfor.)
mail.example.net
arne@example.net
mail.myisp.net
acc@myisp.net
Arbeidstasjoner skal sende mail til local mail-server og ikke motta mail. All mail handteres av server. MUA henter mail fra server vha. POP e.l.
Her settes en del verdier for at utgående mail forwardes til server.
# Sette domenenavn til acme.net for ufullstendige adresser myorigin = $mydomain # Hindre utidige dial-on-demand oppkoblinger disable_dns_lookups = yes # Forwarde all mail til lokal server relayhost = mail.acme.net # Ikke relay'e mail for andre enn seg selv mynetworks_style = host
MUA (epost-klient) sender sin mail med kommando sendmail -f acc@myisp.net
for at envelope sender adresse skal bli korrekt (ute i den store verden). Ellers skal epostklienter
settes opp til å sende og hente email til/fra mail.acme.net
via lokal
brukerkonto og passord. ISP-konti skal ikke blandes inn i det hele tatt, det handteres fra
serveren ved at fetchmail henter all mail fra ISP og fordeler på lokale brukerkonti.
Serveroppsettet skal håndtere det meste av evt. "finurligheter"
i mailoppsettet, slik at intet overlates til mailoppsett til bruker på klientmaskin.
Det eneste jeg ser jeg ikke har overlatt til server er å passe på at
avsenderadresse (inkl. envelope) omskrives fra xxx@acme.net til yyy@myisp.net.
Det kunne vært fikset enkelt v.h.a. sender_canonical_maps
(jfr. recipiant_canonical_maps
. Imidlertid er dette ikke noe problem
da de fleste e-post programmer (MUA's) handterer dette korrekt selv (jeg er bare
oppmerksom på dette selv fordi mutt
(som jeg bruker) må
eksplisitt handtere dette selv (se siste avsnittet ovenfor).
.
# Sette domenenavn til acme.net for ufullstendige adresser myorigin = $mydomain # Fortelle postfix hva som skal oppfattes som lokal mail mydestination = $myhostname, localhost.$myhostname, $mydomain # Relay'e kun for eget lokalnett mynetworks = 192.168.1.0/24, 127.0.0.0/8 # Lytte til alle aktive interfaces ('all' er defalt, da) inet_interfaces = all # Address-rewrite for adresser som faktisk er lokale brukere recipient_canonical_maps = hash:/etc/postfix/recipient_canonical # Det som ikke leveres lokalt sendes ISP relayhost = mail.myisp.net # Men ISP-mail sendes ikke umiddelbart (cron) defer_transports = smtp # Ikke send varsel om manglende levering før etter 12 timer delay_warning_time = 12
Denne filen inneholder alle navn som lokal mailserver skal handle mail for, og kan se slik ut:
# Mailadresser (internett) som skal "mappes" til lokale konti acc@myisp.net arne alias@myisp.net arne #(pluss andre som skal mappes til lokal konto)Kjør kommando
postmap /etc/postfix/recicpient_canonical
for å generere oppslagstabell for postfix.
For å sende mail fra køen til ISP, kjøres denne kommandoen fra et (cron-) script (dette er postfix sin sendmail):
/usr/sbin/sendmail -qDette kan f.eks. settes opp slik (som 'root'):
crontab -eOg tast inn følgende:
MAILTO=arne # Send mail at 17:15 mon-fri 15 17 * * 1-5 /usr/sbin/sendmail -qSe cron.html for litt mer info om formatet på crontab, men du finner ut enda mer med kommando
man 5 crontab
i Linux-konsollet.
(Setningen 'MAIL=arne' er bare for å sende output fra jobben som mail til meg selv.)
På arbeidsstasjon har jeg installert Mandrake 8.1 med postfix, men på server kjører jeg Red Hat 7.2 og valgte derfor hente postfix fra nettet og installere fra source. Jeg hentet siste snapshot (ca. jan/feb 2002) i det jeg antar at den er stabil (nok). Siste offisielle versjon er ganske gammel (et års tid).
Fra en høvelig katalog kjøres følgende kommandoer for å pakke ut filarkivet og kompilere Postfix (dette kjøres som vanlig bruker):
tar -zxvf postfix-1.1.2.tar.gz cd postfix-1.1.2 makeKompilering tok noen minutter på min litt slitne server.
Følgende kommandoer ble kjørt (som 'root'):
# sjekke at mail-kø er tom /usr/bin/mailq # stoppe 'sendmail' /etc/rc.d/init.d/sendmail stop # sjekke at sendmail prosesser er borte ps aux | grep sendmail # rydde litt mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF mv /usr/bin/newalias /usr/bin/newalias.OFF # (de to neste "filene" er bare symlinker til /usr/sbin/sendmail) rm -f /usr/bin/mailq rm -f /usr/bin/newaliases chmod 755 /usr/sbin/sendmail.OFF /usr/bin/newalias.OFF
Husk å kompilere Postfix først (se ovenfor) og fortsett som 'root'! Opprette bruker for postfix (her er UID og GID satt til 491) og installere postfix:
groupadd -g 491 postfix groupadd -g 492 postdrop useradd -u 491 -g 491 -s /bin/false -d /var/spool/mail -M -c Postfix postfix make installHvis du skal oppgradere en tidligere
postfix
-installasjon, kjøres
make upgrade
.
Godta gjerne alle defaultverdier for install-script (release 1.1.2 fra 25. jan. 2002 har noen
flere parametre enn tidligere versjoner (aug. og nov. 2001)):
install_root = / tempdir = <aktiv katalog> config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix command_directory = /usr/sbin queue_directory = /var/spool/postfix sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq mail_owner = postfix setgid_group = postdrop manpage_directory = /usr/local/man sample_directory = /etc/postfix readme_directory = no -> /etc/postfixOpprett alias for postfix i
/etc/aliases
postfix: rootKjø kommando
newaliases
etterpå.
NB: Konfigurer helst /etc/postfix/main.cf
først.
Sjekk filen /etc/syslog.conf
:
mail.err /dev/console mail.debug /var/log/maillogHos meg var setningen
mail.* /var/log/maillog
(elns) allerede på
plass, så ingen endring var nødvendig.
Nå er vi klare til å starte, bare et par kommandoer først:
postfix check # Kontrollere oppsett tail /var/log/maillog # Se etter feilmeldinger i loggen chmod 1777 /var/spool/mail # Jeg fant klage på dette i loggenDa skulle det bare være å starte opp postfix med kommandoen
postfix startHvis alt fungerer, kan en fjerne sendmail (filene vi renamet til ...OFF tidligere).
Det siste som gjenstår er å fjerne oppstart av sendmail
fra /etc/rc.d/rd.[35]
og lage oppstart for postfix
.
For å starte postfix ved restart kan denne oppstartsfilen brukes:
/etc/rc.d/init.d/postfix
. Den kopierte jeg
rått fra Mandrake-maskinen min. Jeg antar at den skulle funke ok.
Til slutt må lage vi symlinker fra /etc/rc.d/rc[35].d/
til
/etc/rc.d/init.d/postfix
(og fjerne symlinken S80sendmail
):
cd /etc/rc.d/rc3.d ln -s ../init.d/postfix S80postfix rm -f S80sendmail cd ../rc5.d/ ln -s ../init.d/postfix S80postfix rm -f S80sendmailKommando
chkconfig --level 35 postfix on
(f.eks.) kan også brukes,
men jeg er vant til å gjøre det på denne måten
(og ikke glem å fjerne sendmail fra oppstart).
Grasmyr, 2002.02.18, Arne Hanssen