Importálásra került a "gilles" smtpd az OpenBSD base-be

Címkék

Gilles Chehade (gilles@) hosszú évekig Postfix-et használt, de mivel a Postfix licence nem teszi lehetővé az OpenBSD base-be emelését, Gilles-nek problémája volt vele. Egyrészt az, hogy mivel nem része az OpenBSD alaprendszernek, nem kerül a kódja auditálásra az OpenBSD projekt részéről, másrészt pedig az, hogy minden OpenBSD kiadáskor (évente két alkalommal) sok munka volt az újratelepítésével és beállítgatásával. Gilles ezért úgy döntött, hogy az OpenBSD alapértelmezett MTA-jára, a Sendmail-re vált.
A Sendmail-t használta egészen addig, míg egy nap egy apró konfigurációt kellett elvégeznie a Sendmail-en. A beállítás horror volt, sok időt vett igénybe a szinte "olvashatatlan" konfig file-ok átnézése, s ez felbosszantotta a fejlesztőt.

Mérgében lementette a laptopjára az SMTP RFC-t (RFC2821), leugrott a pub-ba, aholis nekiállt egy nagyon egyszerű SMTP szerver alapjait letenni. Két-három óra kódolás után már a kezében volt egy kezdetleges kód, amely képes volt értelmezni egy egyszerű SMTP session-t és képes volt azt mind mbox, mind Maildir formátumban a mailbox-ába kézbesíteni.

Ezután a kódot megmutatta Charles Longeau-nak (chl@), aki átnézte a kódot és egyre több diff-et küldött hozzá. Így jutott az egyszerű SMTP szerver egyre több új szolgáltatáshoz, például "aliases" támogatáshoz, mailer deamon-okhoz, "relaying" támogatáshoz.

Ezt követően bekapcsolódott a munkába Pierre-Yves Ritschard (pyr@), akinek szintén voltak ötletei. Munkája nyomán a stuff már pf-szerűen volt konfigurálható:

Eredeti szintaxis:


listener 127.0.0.1:25 {
		hostname mx1.poolp.org
		domain poolp.og {
			store to mbox
		}
	}

Az újabb:

	listen on 127.0.0.1 port 25
	hostname mx1.poolp.org
	accept domain "poolp.org" store to mbox

Tovább folyt a munka. Gilles belemerült a kódolásba a SlackAthon rendezvényen, ahol számos bugot javított és újabb szolgáltatásokat implementált. Megjelent a fejlettebb "aliases" támogatás, a virtuális user-ek támogatása és a forward file-ok használatának lehetősége, amely a vacation(1) és a hozzá hasonló alkalmazások használatát tette lehetővé.

A SlackAthon után kódtisztítás és tesztelés következett. A "gilles" smtpd most az alábbiakat tudja:

  • IPv6 fully, it accepts, resolves and connects to IPv6 enabled hosts
  • SSL/TLS if a certificate is found in /etc/mail/certs/
  • aliases/virtual users/forward files
  • using external MDA such as procmail

Hogy a munka egyszerűbben folyhasson, Gilles importálta az smtpd-t az OpenBSD base-be. Természetesen nem titok, hogy sok munka van még hátra addig, amíg igazán használható valami áll össze belőle.

A fejlesztéskor szem előtt tartják a biztonságot és a moduláris felépítést. Az smtpd felépítéséről az ARCHITECTURE file ad bővebb felvilágosítást.

További részletek itt.

Hozzászólások

remelhetoleg ez nem lesz olyan nehezen konfiguralhato mint a sendmail :D
---
Tévedni mindenkinek szabad, csak a mérnöknek észre kell vennie.

De miert nem valami strukturalt konfiguracios file formatumot hasznalnak, mint pl az XML vagy JSON, hogy programmal konnyebben feldolgozhato legyen?

A cikkben le van írva, hogy "pf-szerű" szintaxis. Pont, hogy nem új, hanem az OpenBSD-sek által már ismert és kedvelt - a pf csomagszűrő konfigurációjára hajazó - formátum. Tehát tudatosan alakították olyanra, amit már jó eséllyel minden OpenBSD-t használó ismer.

--
trey @ gépház

Lehet, csak nem érdemes. Sem az XML sem a JSON nem alkalmas arra, hogy emberi fogyasztásra alkalmas konfigurációs formátumot tervezz vele, megfelelően nagy bonyolultság mellett is. Persze lehet azt csinálni, hogy kanyarítunk az egész köré valami konfig generátort, csak az ilyeneknek az a baja, hogy sosem fedi le azoknak a lehetőségeknek a halmazát, amit kézzel el tudsz érni - ellenben butít és lustít.

A lényeg számomra ez:
"The SMTP Daemon relies on a fully asynchronous and event based data
transfer model. The IMSG pseudo-protocol is used throughout the daemon
to provide communication between separate privilege-separated
processes."

> Gilles-nek problémája volt ...., hogy minden OpenBSD kiadáskor (évente két alkalommal) sok munka volt az újratelepítésével és beállítgatásával.

Mondjuk én úgy gondolom, hogy egy frissítés előtt az ember lementi a konfig fájlt, majd miután elolvasta az új verzió Changelog-ját (vagy hasonló összefoglalót), visszatölti - esetleg átírja azt a 3 sort, amit változtatni kell. Persze biztosan úgy fejlődik a Postfix, hogy minde OBSD verzióváltásra jut 2 Postfix majorverzió váltás, inkompatibilis konfigformátummal.

Amúgy meglepett a dolog, mert eddig abban a naív hitben voltam, hogy a Postfix BSDL szoftver (mintha Venema FreeBSD-n fejlesztené).
No mindegy. Éljen a hiper-szuper (majdan) nagytudású új smtp-szerver. Csak azt tudnám, miért akar valaki SMTP-szervert építeni, amikor szabadidejét fordíthatná nekem fontosabb dolgok fejlesztésére is ;-)

"mert eddig abban a naív hitben voltam, hogy a Postfix BSDL szoftver"

Nem az. IBM Public License.

Theo de Raadt emlékezetes szavai 2003-ból:

"I will continue to call postfix not-free, since my
interpretation (and the interpretation of the lawyers who I go for
beer with) is that this license burdens me with rules. Potentially,
maybe, yeah, but I do not accept potentials for me or for anyone else.
We ship software that is free, and also transitively free.

So, postfix is not free. It will never go into OpenBSD. As far as I
know, at this time there is only one acceptably free mail server that
we can use (and even with sendmail we have had a bit of a battle
keeping it freeish), and we will continue to use sendmail for the
forseeable future. Nothing any of you say on this list will change
that."

--
trey @ gépház

lol lol
Meló helyen ez az egyik felhasználó nevem, mármint a "gilles" nem én választottam ... kaptam.
Percekig röhögtem (meglepő volt itt olvasni)... család igen furán nézett... és nem bírtam elmagyarázni....
.
bocsi :-D

Aterzem a "fejleszto" rettenetes problemait. Mint egy valosagshowprogramozo. okos. majd az userek eldontik.

a sendmailnak egyetlen konfig fileja van, (sendmail.cf) ami tenyleg olvashatatlan.
a tobbi ( access, virtusertable, etc ) mar a .cf -tol fugg, es senki nem tud meggyozni rola, hogy olvashatatlan.
meg ugye a .cf -et sem feltetlen kell kezzel editalni, erre van az a nyuves sendmail.mc meg az m4 vagy mifene.
vajon mi lehetett az az apro beallitas ami feturbozta emberunket ? utanaasok.

Akkor nyugodtan kitarthatsz a sendmail mellett. Ugyanis nem *kell* fordítani a konfigját, nyugodtan szerkeszthető kézzel is. Tekintettel arra, hogy a sendmail.cf (általában) első fele különböző változó/makró definíciókkal van tele - ez meg nem hiszem, hogy olyan nagyon olvashatatlan lenne (legfeljebb baromi sok mindent lehet benne beállítani), feltételezem az átírási szabályokat tartják az emberek olvashatatlannak. Ezek gyakorlatilag szabályos kifejezések - legfeljebb nem az - egyébként UNIX/Linux alatt sed/grep/vi/awk által elterjesztett szintaxist használják. Az "eredeti" regex-hez képest már a PCRE (Perl-compatible-RE) is olvashatatlan, no és? Meg lehet tanulni. Egy adott szint fölött pedig ez (regex olvasás/írás tudás) igenis elvárás is lehet egy *ix rendszergazdától. Persze aki a használt oprendszert nem ismeri, és úgy akar levelezőszervert üzemeltetni, annak a sendmail valószínűleg nem jó választás.

Ja és még valami:

> bind = 0.0.0.0

Ez alatt Te konkrétan mit értesz? Ugyanis van szoftver, amiben pl. a "telnet 0 22" eredménye:

Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.

gy. k.: ha célként adom a 0-t (0.0.0.0 -t), az a loopback cím :-) - míg pl. másoknál a 0.0.0.0:22 azt jelenti, hogy minden interfaszon figyel a (talán) ssh-szerver. Szóval óvatosan ezekkel a nagyvonalú kijelentésekkel.

Micsoda mázli, hogy Henning anno lefoglalta az opensmtp.org domaint, így lehet folytatni a megkezdett hagyományt... :)

jol hangzik

--
When in doubt, use brute force.