|
| Postfix relay-maskine, hvordan lave lokale~ Fra : Allan Olesen |
Dato : 14-09-03 17:53 |
|
Mit spoergsmaal kommer laengere nede, men foerst lidt baggrund:
Paa min arbejdsplads har vi en Exchange-server, som tager mod
mails for firmaets domaene. Nu skal den hives ud af drift et par
dage for opgradering af hardware. Det er ikke min hovedpine, for
jeg vil ikke have noget med Exchange at goere.
Jeg har saa faaet til opgave at saette en postfix-maskine ind
foran Exchange-serveren, saaledes at folk ude i verden ikke faar
fejlbeskeder, naar deres mails ikke kan afleveres.
Det er nemt gjort. Man smider Debian Woody paa en maskine,
installerer postfix, aendrer lidt i main.cf:
relay_domains=example.com
transport_maps=hash:/etc/postfix/transport
....og i /etc/postfix/transport:
example.com smtp:[192.168.0.7] (ip-adresse for Exchange)
....hvorefter man faar aendringerne til at slaa igennem med
kommandoerne:
postmap /etc/postfix/transport
/etc/init.d/postfix restart
Tilbage er bare at omkonfigurere firmaets firewall, saa
indgaaende trafik til port 25 sendes til postfix-maskinen i
stedet for Exchange-maskinen.
Derefter skulle det hele fungere helt transparent, baade udadtil
og indadtil. Mail udefra afleveres til Postfix, som forsoeger at
sende det videre til Exchange, og hvis Exchange er nede, bliver
det lagt i koe i op til 3 doegn.
Nu kommer saa problemet:
Vi kan naturligvis ikke have, at der ikke reageres paa mails i to
dage. Derfor har jeg lovet at lave to ting mere:
-en form for "vacation"-besked, saa afsendere faar at vide, at
der vil gaa et par dage, foer deres mail bliver laest.
-en webmail, saa brugerne "manuelt" kan se de mails, der ligger i
koe. (Selv om vi lige har skrevet tilbage til afsenderen, at det
ikke vil ske.)
Det mest elegante vil vaere at finde en en webmail-applikation,
der laeser direkte i postfix' koe, samt at konfigurere postfix
til at sende vacation messages for relayede mails. Ingen af
delene ser desvaerre ud til at vaere muligt.
Det naestmest elegante maa derfor vaere lokal levering af en kopi
af de relayede mails. Saa kan jeg baade lave webmail og
vacation-messages. At lave et script, som sletter de lokalt
leverede mails efter nogle dage, er der heller ingen ben i.
Men hvordan laver jeg lokal levering for et relayed domaene?
Alle de krumspring, jeg kender (/etc/postfix/aliases,
/etc/postfix/virtual eller procmail), virker jo kun, hvis
postfix-maskinen er endelig destination for example.com. Og det
er den i sagens natur ikke, naar den skal relaye example.com
videre til Exchange.
Det bedste, jeg kan komme op med lige nu, er:
1. Goere postfix til endelig destination for example.com.
2. Levere mails til user@example.com lokalt, med kopi til
user@another.example.com.
3. Videresende al mail til another.example.com til en
postfix-server mere, som igen omskriver user@another.example.com
til user@example.com og videresender til Exchange-serveren.
"En postfix-server" mere i pkt. 3 kan i princippet vaere samme
postfix, som konfigureres til at lytte paa to forskellige porte
med forskellige opsaetninger af videresendelse. Foelgende er
uproevet, men jeg tror, det vil virke:
/etc/postfix/master.cf:
127.0.0.1:10025 inet n - y - - smtpd
-o mydestination=another.example.com
-o alias_maps=hash:/etc/aliases2
-o alias_database=hash:/etc/aliases2
-o transport_maps=hash:/etc/postfix/transport2
/etc/postfix/transport:
another.example.com smtp:[127.0.0.1]:10025
/etc/postfix/transport2:
example.com smtp:[192.168.0.7]
/etc/aliases:
user1 user1, user1@another.example.com
user2 user2, user2@another.example.com
/etc/aliases2:
user1 user1@example.com
user2 user2@example.com
Men det er da godt nok noget af det mest uelegante, jeg laenge
har set, og jeg foeler, at jeg gaar over aaen efter vand. Er der
nogen, der har et bedre forslag?
(Jeg vil helst undgaa MySQL, som ellers kunne fjerne lidt af
redundansen i konfigurationsfilerne.)
--
Allan Olesen, Lunderskov.
Danske musikere tjener penge ved ulovlig softwarekopiering.
| |
Klaus Alexander Seis~ (14-09-2003)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 14-09-03 18:18 |
|
Allan Olesen skrev:
> Men hvordan laver jeg lokal levering for et relayed domaene?
Jeg ville bruge Postfix' always_bcc-feature:
#v+
# /etc/postfix/main.cf
always_bcc = catchall
#v-
hvor "catchall" er en bruger på postfix-maskinen, oprettet specielt
til formålet. I den brugers homedir kan man nu opsætte procmail-
regler der gør hvad der skal gøres ved kopien af posten. Det vil
nok være praktisk at have en formail-regel der sorterer dubletter
fra inden, fx
#v+
# ~catchall/.procmailrc
CACHE_LEN = 1048576
CACHE_FILE = ".Message-Id.cache"
CACHE_LOCK = "$CACHE_FILE$LOCKEXT"
LOCK_FILE = "$CACHE_LOCK"
:0
* ^Message-Id:
* ? $FORMAIL -Y -D $CACHE_LEN $CACHE_FILE
{
# Her bliver dubletter smidt i /dev/null, men man kunne
# osse have valgt at lægge dem i et katalog i stedet.
:0 h
/dev/null
}
LOCKFILE
# Her kan procmail så sende feriesvar m.m. tilbage
#v-
Der skal selvfølgelig være en passende ~catchall/.forward, der sender
brevene gennem procmail.
// Klaus
--
><> unselfish actions pay back better
| |
Allan Olesen (14-09-2003)
| Kommentar Fra : Allan Olesen |
Dato : 14-09-03 20:33 |
|
Klaus Alexander Seistrup <spam@magnetic-ink.dk> wrote:
>Jeg ville bruge Postfix' always_bcc-feature:
>
>#v+
># /etc/postfix/main.cf
>
>always_bcc = catchall
>
>#v-
Tak. Det ser faktisk ud til at fungere med et relayed domaene.
Men saa dukker der et nyt problem op. Postfix 1.11, som er nyeste
version i Debian Woody, laver ingen X-Original-To:-header, saa
hvis jeg forwarder al mail til catchall, faar jeg problemer,
baade med at sortere ud til lokale mailbokse og skrive
meningsfyldte vacation-messages, fordi:
-To:-headeren kan man ikke stole paa.
-Delivered-To:-headeren omskrives til catchall@mydestination
-Received:-headeren vil som regel indeholde en modtageradresse,
men ikke hvis der er sendt til flere modtagere paa vores domaene.
Kan man komme uden om det, eller maa jeg bare plukke de gyldige
adresser, jeg nu kan finde i To: og Received: og ignorere resten?
[...]
>Det vil
>nok være praktisk at have en formail-regel der sorterer dubletter
>fra inden, fx
>
>#v+
># ~catchall/.procmailrc
Ser smart ud. Den maa jeg kigge naermere paa.
[...]
>Der skal selvfølgelig være en passende ~catchall/.forward, der sender
>brevene gennem procmail.
Jeg kan vel lige saa godt bare konfigurere postfix til at levere
lokal mail gennem procmail?
Jeg har forresten i mellemtiden leget med mit eget forslag.
Foerst virkede det ikke, fordi postfix paa port 25 ikke kunne
lide at snakke med en postfix paa port 10025, som praesenterede
sig med samme hostname. Saa tilfoejede jeg i master.cf under
options for port 10025:
-o hostname=nogetandet
Saa ville de to snakke sammen, men jeg faar et mailloop. Saa vidt
jeg kan se, vil postfix10025 ikke bruge /etc/aliases2 og
/etc/postfix/transport2, selv om jeg i master.cf under options
for port 10025 har:
-o alias_maps=hash:/etc/aliases2
-o alias_database=hash:/etc/aliases2
-o transport_maps=hash:/etc/postfix/transport2
Derfor bliver user@another.example.com ikke omskrevet til
user@example.com og sendt til Exchange-serveren. I stedet sendes
den een gang til til port 10025 osv.
Foerst troede jeg, at jeg havde misforstaaet konceptet med at
angive optioner i master.cf, men saa burde
'-o hostname=nogetandet' jo heller ikke have virket.
Nogen god forklaring?
(Jeg har naturligvis genereret aliases2.db og transport2.db).
--
Allan
| |
Klaus Alexander Seis~ (14-09-2003)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 14-09-03 21:45 |
|
Allan Olesen skrev:
> Men saa dukker der et nyt problem op. Postfix 1.11, som er
> nyeste version i Debian Woody, laver ingen X-Original-To:-
> header, saa [...]
Puha, så kan jeg vist kun foreslå dig at skifte til Postfix 2
fra unstable (med mindre der findes konfigurationsflag der kan
få Postfix 1 til at lave X-Original-To:-linjer i brevhovedet).
>> Der skal selvfølgelig være en passende ~catchall/.forward,
>> der sender brevene gennem procmail.
>
> Jeg kan vel lige saa godt bare konfigurere postfix til at
> levere lokal mail gennem procmail?
Det kan man, jeg har af en eller anden grund bare altid brugt
en .forward-fil.
> Derfor bliver user@another.example.com ikke omskrevet til
> user@example.com og sendt til Exchange-serveren.
Hjælper det mon noget at sætte masquerade_domains=example.com?
Mailloop er onde.
Hvis posten hevde været gennem procmail, kunne man lade formail
indsætte en X-Mail-Loop:-linje i brevhovedet.
// Klaus
--
><> unselfish actions pay back better
| |
Ivar (14-09-2003)
| Kommentar Fra : Ivar |
Dato : 14-09-03 21:18 |
|
Allan Olesen wrote:
> Men det er da godt nok noget af det mest uelegante, jeg laenge
> har set, og jeg foeler, at jeg gaar over aaen efter vand. Er der
> nogen, der har et bedre forslag?
hvorfor ikke sætte visuel domæner i postfix. (så kan du bruge samme postfix
der lytter på port25 for begge funktioner)
lade første mailserver sende en copi af alt indgående mail til et andet
(sub)domæne som køre på samme postfix hvor postfix så er sat op som
mailrelay (ligesom TDC's backup-mx til ADSL kunderne) med vider destanation
til exchange serveren, hvor den så igen sletter subdomænet.
Derved vil du kunne på have en backupserver for jeres exchange, og du vil
have mulighed for at kunne sætte en webserver op.
Og i kan beholde opsætningen efter den opgraderede exchange er kommet på
plads.
Eller en postfix der simpelthen fungere som backupserver hvor du lige har
procmail inde og vende (ved ikke om du kan det med en postfix som
backupserver) og så i procmail har en
:0c
* ^Recived
#den header har alle mail, og det er jo alle mail der skal fanges i filteret
/var/spool2/mail
så har du en mailboxfil som du kan sætte en webmail til at hente mail fra.
--
Med venlig hilsen
Ivar
| |
Allan Olesen (14-09-2003)
| Kommentar Fra : Allan Olesen |
Dato : 14-09-03 21:39 |
|
Ivar <news-@milli.dk> wrote:
>hvorfor ikke sætte visuel domæner i postfix.
(Du mener virtuelle domaener.)
>(så kan du bruge samme postfix
>der lytter på port25 for begge funktioner)
>lade første mailserver sende en copi af alt indgående mail til et andet
>(sub)domæne som køre på samme postfix hvor postfix så er sat op som
>mailrelay (ligesom TDC's backup-mx til ADSL kunderne) med vider destanation
>til exchange serveren, hvor den så igen sletter subdomænet.
Fordi jeg vil have en transparent loesning. Exchange-serveren
skal ikke omkonfigureres til at modtage mails for et
dummy-domaene, som kun er oprettet af hensyn til postfix.
Dit forslag kan i oevrigt forenkles. I stedet for at lade postfix
agere relay for (sub)domaene, kan man lige saa godt sende kopien
direkte til Exchange-serveren. Saa slipper man for at at oprette
dobbelte virtuelle domaener (man behoever faktisk slet ikke
oprette virtuelle domaener), og man slipper for at sende mailen
to gange gennem postfix.
--
Allan
| |
Jesper Louis Anderse~ (15-09-2003)
| Kommentar Fra : Jesper Louis Anderse~ |
Dato : 15-09-03 23:16 |
|
In article <3f649d08$0$54815$edfadb0f@dread11.news.tele.dk>, Allan Olesen wrote:
> -en form for "vacation"-besked, saa afsendere faar at vide, at
> der vil gaa et par dage, foer deres mail bliver laest.
ARGH! Det synes jeg er en dum ide. Du vil bare skabe irritation med
noget saadant. Det jeg ville goere var at banke en meddelse op som
drift og saa ikke sende mails tilbage. Rammer en spammail dig i den
periode er du 100% sikker paa at spammeren ved at kontoen eksisterer.
En webserver ville nok kunne daekke formaalet. Hvis i ikke kan taale
det, saa maa i aerligt talt reducere vinduet hvori exchange serveren
er nede.
Jeg vil ioevrigt anbefale dig at beholde postfix-serveren
af sikkerhedshensyn da en eventuel bug i Exchange saa ikke er direkte
udsat. Desuden kan header_checks samt body_checks fjerne mange
problemer indtil man kan afse tid til at opgradere sin Exchange
server.
> -en webmail, saa brugerne "manuelt" kan se de mails, der ligger i
> koe. (Selv om vi lige har skrevet tilbage til afsenderen, at det
> ikke vil ske.)
Sorry for at stikke igen - men det er overkill for 2 dage. Det er
spild af din arbejdskraft, fordi at nogen andre hoveder ikke kan
finde ud af at konfigurere en server. Jeg mener at du loeser det
forkerte problem her og laver symptombehandling i stedet for
loesningen.
--
j.
| |
Klaus Alexander Seis~ (16-09-2003)
| Kommentar Fra : Klaus Alexander Seis~ |
Dato : 16-09-03 06:53 |
|
Jesper Louis Andersen skrev:
>> -en form for "vacation"-besked, saa [...]
>
> Rammer en spammail dig i den periode er du 100% sikker paa
> at spammeren ved at kontoen eksisterer.
Hvornår er spammere begyndt at sende mails med korrekt returadresse?
Næh, i tilfælde af spam (eller mails fra en orm) er det højst sand-
synligt en uskyldig der får vacation-svaret.
// Klaus
--
><> unselfish actions pay back better
| |
Allan Olesen (16-09-2003)
| Kommentar Fra : Allan Olesen |
Dato : 16-09-03 18:11 |
|
Jesper Louis Andersen <jlouis@miracle.mongers.org> wrote:
>ARGH! Det synes jeg er en dum ide. Du vil bare skabe irritation med
>noget saadant.
Vi bruger faktisk i ret stort omfang mail til vigtige ting, der
ikke kan vente i flere dage. Folk uden for huset har vaennet sig
til, at det fungerer at sende os mails.
Derudover vil alternativet vaere, at folk faar uforstaaelige
engelske meddelelser om deferred mail fra tilfaeldige mailservere
paa vejen. Det vil skabe mere irritation.
>Det jeg ville goere var at banke en meddelse op som
>drift og saa ikke sende mails tilbage.
Du mener give vores egne brugere en generel besked, at mails til
dem ikke naar frem? Det er naturligvis gjort, men det er da
afsenderen, der skal have det at vide. Det er jo ham, der ved, at
der er sendt en mail.
>Rammer en spammail dig i den
>periode er du 100% sikker paa at spammeren ved at kontoen eksisterer.
Det har andre svaret paa. Derudover modtager vi kun ganske faa
spammails.
>En webserver ville nok kunne daekke formaalet. Hvis i ikke kan taale
>det, saa maa i aerligt talt reducere vinduet hvori exchange serveren
>er nede.
Ikke mit bord.
>Jeg vil ioevrigt anbefale dig at beholde postfix-serveren
Ikke mit bord. Men jeg er naturligvis enig. Jeg fatter ikke, at
nogen toer slippe en server loes paa Internettet med MS-software.
Endda i dette tilfaelde en server, der staar inde midt i vores
lokalnet, uden at resten af nettet er beskyttet mod den.
>Sorry for at stikke igen - men det er overkill for 2 dage.
Igen: Det har vi ikke vurderet i vores tilfaelde. Og jeg tror
egentlig, at vi selv kender vores behov udmaerket.
>Det er
>spild af din arbejdskraft, fordi at nogen andre hoveder ikke kan
>finde ud af at konfigurere en server.
Jeg har haft det fint med det. Jeg traengte til at oeve mig paa
procmail og postfix.
>Jeg mener at du loeser det
>forkerte problem her og laver symptombehandling i stedet for
>loesningen.
Die Endloesung er ikke paa tale her.
--
Allan
| |
|
|