Sziasztok!
Egy tesztkörnyezetben készítek Postfix levelezőszervert, amelyet Postfixadmin segítségével adminisztrálnék.
A gond a következő: amikor felveszek egy új felhasználót a postfixadmin segítségével, az elkészítené a postafiókot egy teszt levél küldésével. Localhoston betolná a levelet a Postfix részére, de az elutasítja a levelet, mondván:
"May 10 20:49:35 mailserver postfix/smtpd[2026]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname;"
A main.cf idevágó sora:
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
check_helo_access
hash:/etc/postfix/helo_access,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
permit
A kérdés: miért nem veszi figyelembe a permit_mynetworks paramétert? A mynetworks változó így szerepel:
mynetworks = 127.0.0.0/8, 192.168.100.0/24
A másik gondom, hogy miért csak mailserver néven mutatkozik be a Postfixadmin? Hol a domain név rész?
Köszönök minden ötletet.
Attila
- 3192 megtekintés
Hozzászólások
Oké, ez furcsa, de legyen.
Szóval, a /etc/hosts fájl tartalmazta a szerver nevét fqdn nélkül (mailserver).
Ezt kivettem belőle.
Maradt a localhost és a mailserver.peldadomain.hu.
Most ha készítek postafiókot, kézbesíti a levelet minden hiba nélkül. Az érdekes az, hogy ettől még nem tudom, hogy a permit_mynetworks miért maradt hatástalan, igaz, most nem is történik semmi HELO játék. Bejön localhoston a mail és megy a helyére dovecot transporttal.
Élesben is van ilyen szerverem, ott a /etc/hosts tartalmazza a levelezőszerver nevét fqdn nélkül is, és azzal nem volt ilyen gond. Igaz, ott van rendes DNS is, talán ez a dolog nyitja, ez pedig egy teszt rendszer DNS nélkül.
Ha elkészül a tesztrendszer, lesz egy howto Debian Jessie-re: Postfix, PostfixAdmin, Dovecot, Quota, Sieve, MySQL, SPamfilter, Roundcube, stb...ha érdekel valakit egyáltalán.
Nos?
:-)
- A hozzászóláshoz be kell jelentkezni
..megköszönjük.
--
God bless you, Captain Hindsight..
- A hozzászóláshoz be kell jelentkezni
Hiányzik a mian.cf-ből a local domain, amivel alapból visszaválaszol.
myhostname = mail.gepem.lan
Ezért utasítja el a helo-t.
Ugyanitt megadott nvevet vedd fel a hosts fájlba is.
postfix check-el tudod nézni,hogy jó-e a konfigod.
- A hozzászóláshoz be kell jelentkezni
Szia!
Így volt benne.
Íme:
myhostname = mailserver.peldadomain.hu
mydomain = peldadomain.hu
mynetworks = 127.0.0.0/8, 192.168.100.0/24
De nem ment, csak akkor, amikor a /etc/hosts fájlból kivettem a rövid nevet (mailserver).
- A hozzászóláshoz be kell jelentkezni
A functions.inc.php-ben levő send_mail-ből kiindulva (csak egy kávét ittam, ilyenkor még lehet, hogy tévedek) a php_uname("n")-el kotorja elő a saját hosztnevét, ami ha jól látom nagyjából egy hostname hívás (gethostname). Az egyik lehetőség, hogy a teljes fqdn-t felviszed a hostname-nek (és valszeg megtöröd vele a disztróbeli csomagok egy részét, amik ott nem fqdn-t várnak), a másik, hogy patcheled a PostfixAdmin-t.
Config-ba:
$CONF['myhostname'] = 'foo.bar.tld';
functions.inc.php
$smtp_server = php_uname("n");
(Érdekesség: a felette levő kikommentelt sorból látszik, hogy korábban a SERVER_NAME-el játszottak, gondolom belefutottak abba, hogy időnként az Apache se tudja magáról, hogy kicsoda :) )
sor helyett:
$smtp_server = $CONF['myhostname'];
(lehetne reverse lookup, hostname -f hívás, akármi, szvsz. a definiálás a legüzembiztosabb)
Szerk.: Egyébként pedig elég gyanús ez a PFA, ha a többi is olyan, mint az "SMTP implementációjuk" (EHLO-zik egyet, aztán meg se nézi, hogy mit mond rá a szerver, mert minek az...), akkor én elkerülném.
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
Alapvetően a lustaság miatt használom a PFA-t, eddig nem is volt gond vele, több száz domaint a postafiókokkal könnyű vele kezelni. Csak mivel kijött az új Debian, gondoltam, csinálok egy referencia telepítést és egy leírást is hozzá, amit publikálni fogok. Ekkor jött elő ez a hiba, de a /etc/hosts fájlból kivéve a szerver rövid nevét és csak az fqdn-t és a localhost-ot benne hagyva működik. Csak azt nem tudtam eddig kitalálni, hogy ez Postfix agymenés (kevésbé valószínű) vagy PFA (inkább).
Köszönöm az ötleteket is :-)
- A hozzászóláshoz be kell jelentkezni
" Egyébként pedig elég gyanús ez a PFA, ha a többi is olyan, mint az "SMTP implementációjuk" (EHLO-zik egyet, aztán meg se nézi, hogy mit mond rá a szerver, mert minek az...), akkor én elkerülném."
Nem levelezokliensnek keszult, arra ott a roundcube. Azert van benne egyaltalan a lehetoseg, hogy levelet kuldjon, mert nagyon sok szerver ugy van belove, hogy az elso level hozza letre a postafiokot a lemezen, addig meg nem lehet belepni a fiokba. Szamara ez egy tet nelkuli meccs, mert a PFA a maga reszet mindenkepp elvegzi, az, hogy a paraszt nem tud belepni addig, amig nem letezik a fiok maildir-je a lemezen, az mar neki erosen out of the scope.
--
Blog | @hron84
Üzemeltető macik
- A hozzászóláshoz be kell jelentkezni
Ez oké, de felette kommentben ott is van, hogy "TODO: Ezt lehet, hogy majd le kéne cserélni valami normálisabbra, pl. Zend_Mail" :)
Meg jó, tfh., hogy tényleg csak egy próba levelet küld: küldjön HELO-t, azt minden mail szerver támogatja.
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
"Szóval, a /etc/hosts fájl tartalmazta a szerver nevét fqdn nélkül"
Es hany meg hany ilyen szervert latok napi szinten, atya eg... *sohaj*
Szoval, a megoldas altalaban nem az szokott lenni, hogy akkor ne legyen a nyuves szervernek FQDN neve, hanem az, hogy megcsinaljuk tisztessegesen.
A /etc/hosts fajlnak igy KELL kineznie, a sorrend fontos!
127.0.0.1 localhost.localdomain localhost
192.168.167.166 enyemszerver.mittudomain.com enyemszerver
Ekkor a "hostname -f" parancs jo FQDN-t fog visszaadni, es habar a PFA problemajat ez nem feltetlen oldja meg, egy csomo mas szopastol meg fogod magadat kimelni, peldaul az Apache se fog arra sirankozni, hogy szerinte a gepednek nincs FQDN neve.
En kivetel nelkul mindig igy allitom be a gepeimet, a mailszervereken erre kiemelten figyelek, meg soha nem volt azzal gond, hogy a gep ne tudta volna a sajat nevet.
Ami szamodra meg megoldhatja a problemat a PostfixAdmin patchelesen kivul (amit en erosen nem ajanlok, mert foleg ha csomagbol van felteve, az elso frissites felul fogja vagni), az egyszeruen az, hogy a gep nevet mindenfele formulaban belerakod a /etc/postfix/helo_access fajlba, majd mondasz ra egy postmap /etc/postfix/helo_access -t. Hogy a permit_mynetworks miert nem mukodik ebben a kornyezetben az egy roppant erdekes kerdes, tippem szerint azert, mert a localhost egy inet_protocols = all (ez a defaultja amugy) konfiguracioju Postfix szerveren elsodlegesen az IPv6-os cimet (::1) jelenti, ami a te konfigod szerinti mynetworks-ben nincs benne.
--
Blog | @hron84
Üzemeltető macik
- A hozzászóláshoz be kell jelentkezni
Szia!
A /etc/hosts fájlban természetesen elejétől fogva benne volt az FQDN (mailserver.peldadomain.hu) is. Mögötte pedig csak a rövid név (mailserver). És így nem működött. Kivettem a rövid nevet, így pedig működött. Az IPv6 pedig le van (és volt is) tiltva, mert egyelőre nem volt rá szükség.
A naplóból az látszik, hogy a localhost[127.0.0.1]-en küldte be a PFA a levelet, és mivel csak mailserver néven mutatkozott be (saját magának?), hát nem vette át a levelet, a permit_mynetworks ellenére sem.
PFA-t nem fogok patchelni, annak ellenére sem, hogy nem csomagból tettem fel. A helo_access fájl is megvan, ahogyan kérted.
Az egész kérdés azért érdekes, mert élesben tökéletesen működő levelezőszerverről vettem a Postfix konfigurációs fájlokat - Debian 7.8 - és most a 8-as Debianon így nem ment. A különbség a kettő között annyi (az eltérő Debian változaton kívül), hogy a tesztrendszerben 192.168.100.x alhálózat van, nem "éles" IP cím, illetve a tartományra nincs DNS.
Attila
- A hozzászóláshoz be kell jelentkezni
Nem kerek ez a dolog, a postfix determinisztikus, ha azt mondod neki valahol, hogy permit_mynetworks, akkor azt bizony figyelembe is veszi, ha a masik fel ebbe beletartozik. A master.cf-ben veletlenul nincsenek felulbiralva az smtpd egyes opcioi? Tudsz debug szintet allitani a debug_peer_level, debug_peer_list opciokkal, hasznosak hibakeresesnel.
- A hozzászóláshoz be kell jelentkezni
A master.cf érintetlen maradt, de megcsinálom még egyszer az egész telepítést elölről, és megpróbálom kideríteni, mi volt a baja. Remélem, sikerül... :-)
- A hozzászóláshoz be kell jelentkezni
Ha nem mukodik, akkor tolts fel minden konfigot (jelszavak nelkul) pastebinre, mert tuti, hogy vmi olyasmit szursz el, amit nem latunk. Ebbe semmi magia nincs, ha csak ennyi lenne a konfigod, amit itt megadtal, akkor ennek menni kene.
--
Blog | @hron84
Üzemeltető macik
- A hozzászóláshoz be kell jelentkezni
Na, akkor most dobálok hamut a fejemre, és veszem fel a zsákruhát is.
A megoldás végig ott volt a szemem előtt. A hibaüzenet még egyszer:
"May 10 20:49:35 mailserver postfix/smtpd[2026]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname;"
RCPT from...
Vagyis a gond nem az smtpd_helo_restrictions részben volt, hanem az smtpd_recipient_restrictions részben. A másolásnál lemaradt a permit_mynetworks rész. És mivel végig a HELO-ra panaszkodott, ott is kerestem a baj okát, persze hiába. Akkor kezdett gyanús lenni, amikor az egész HELO ellenőrzést kiszedtem (smtpd_helo_required = no; a többi kikommentelve), és még mindig nem hagyta magát.
Az smtpd_recipient_restrictions részbe viszetettem a kifelejtett permit_mynetworks részt, és láss csodát: működik.
Mea culpa, srácok...
Attila
- A hozzászóláshoz be kell jelentkezni
... azzal a kiegészítéssel, hogy nálam localhost.localdomain nincs, és soha nem is volt, továbbá írtom, mint a gyomot. A 127.0.0.1 neve az, hogy localhost, és nem több.
Ezen felül minden helyi domainként használt domain (tehát ami előfordulhat bármilyen számítógépen a resolv.conf-ban) zónafájljában van egy "localhost A 127.0.0.1" bejegyzés (azaz ha a kliens nyom egy nslookup localhost parancsot, akkor is megkapja, amit szeretne).
- A hozzászóláshoz be kell jelentkezni