Postfix - localhost-ról 25-ös portra érkező e-mail küldésének tiltása

 ( Szenti | 2014. november 18., kedd - 16:31 )

Sziasztok!

Adott egy szerver, amin Postfix, és webszerver (PHP-val) is fut. Az a problémám, hogy a localhost:25-re telnetelve hitelesítés nélkül is lehet levelet küldeni PHP kódból (SwiftMailerrel), vagy simán TCP socket nyitásával.

A következőket szeretném mind elérni:

  • a localhost:25-ön keresztül ne lehessen levelet küldeni (helyette ott az 587-es, submission port, hitelesítéssel mehet a küldés)
  • Lehetőleg nem iptables-szel szeretném megoldani, mert ágyúval verébre módszernek tűnik
  • a 25-ös portot csak az internet felől érkező kliensek érjék el

Main.cf részlet:
mynetworks =
smtpd_recipient_restrictions = reject_unauth_destination, check_policy_service unix:private/policy-spf

Amikkel eddig próbálkotam, de nem működtek:

  • main.cf authorized_submit_users = root és authorized_submit_users = !www-data, static:all - ugyanúgy engedi a küldést
  • main.cf inet_interfaces = aaa.bbb.ccc.ddd, ahol az aaa.bbb.ccc.ddd az eth0 IP címe - ekkor az amavis nem tudta a Postfixnek eljuttatni az átengedett levelet
  • master.cf-ben átállítottam, hogy csak az eth0 IP címén figyeljen, de ez nem oldja meg a problémát: ha ismeri valaki az IP címet, akkor ezen a porton továbbra is hitelesítés nélkül tud küldeni

Ha a kérdés megválaszolásához kellenek még sorok a konfigurációs fájlokból, kérlek, hogy jelezzétek!

Válaszaitokat előre is köszönöm!

szerk: hibák javítva, kiegészítések.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Neked inkabb az smtpd_sender_restrictions kell es/vagy a mynetworks beallitasa kell. Amugy a gepen keletkezo levelek (pl. cron jobok kimenete) biztos, hogy nem kellenek?

Hmm, nem rossz, köszönöm. A mynetworks szándékosan üres, de még így is megengedte a küldést a 127.0.0.1:25-re érkező kérés esetén.

A cron jobok kimenete viszont kelle, tehát lehet, hogy végül mégis az iptables mellett kell maradjak, mert azzal megadható az UID is. www-data szűrve lenne, a többi processz küldhetne.
Sajnos ugyanis a kiszolgált weboldalakon a felhasználók SFTP-n írhatják a PHP kódokat, ezért jó lenne egy plusz réteggel védeni az SMTP kiszolgálót. Tudom, a legjobb az lenne, ha külön szerverre kerülne a web és a php interpreter, de ez egyelőre nem megvalósítható.

Jobb ötlet:
25-ös port tíltása HA nem root user aki a portot nyitotta. Erre kínál megoldást az iptables. UID-ra, GID-ra is. Külön tíltható csak az apache user/csoport.
A topiknyitónak pedig: nem ágyúval verébre, inkább a legelegánsabb megoldás, egy korrekten belőtt tűzfal.