Postfix+mysql: root nem talalhato

Fórumok

Sziasztok!

Van egy oriasi problemam. Valamiert a postfix nem kepes kikezbesiteni a root szamara a leveleket, csak igen nyakatekert modon.

A rendszer a kovetkezokepp epul fel:
Van egy Postfix levszerver, mely tobb domaint is kezel, ezen domainek listaja mysql-bol jon, mint ahogy az usereke is.

Szeretnem, ha a root@mittudomain.com cimnek meno leveleket az admin@mittudomain.com kapna meg, mely egy virtualis cim.

Eddig probaltam local deliveryhez aliasnak felvenni a root-ot, illetoleg a virtualis alias tablaval is probalkoztam, de semmi eredmeny, csak ugy kepes megkapni a leveleket, hogy a level bouncolodik a postmasternek, a postmaster-t viszont valamiert siman lekezbesiti az admin@ -nak.

Lehet az gond, hogy mig postmaster nevu user nincs a rendszerbe, root van, es mindenkepp annak akarja kezbesiteni? (Erdekes ugyanakkor, hogy pl. a hron nevu usernek siman kezbesit, holott van ilyen virtualis es valos user is) Lehet ezt valahogy force-olni? Local usernek elvben nem is kellene levelet kapni.

Ilyeneket mond nekem:


Aug 24 01:54:39 hanzo postfix/virtual[6254]: 700012EE5: to=<root@mittudomain.com>, orig_to=<root>, relay=virtual, delay=0.11, delays=0.07/0.02/0/0.02, dsn=5.1.1, status=bounced (unknown user: "root@mittudomain.com")

Es innentol a postmasteren keresztul mar eljut az admin@mittudomain.com-hoz.

Hozzászólások

Marmint hogy ne:


root: admin@hanzo.hu

legyen hanem csak siman admin? Akkor nem akar local deliveryt csinalni admin-nak aki megintcsak nem letezo szemely?
Postmasternel miert megy a


postmaster: admin@hanzo.hu

sor?
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

A postfix honnan szedi az aliasokat? /etc/aliases vagy sql-ből? ott kell beírni ahonnan szedi. Postfix config (postconf parancs vagy /etc/postfix/main.cf) megmondja, hogy ő honnan szedi az aliasokat:)


Aug 24 19:52:31 hanzo postfix/smtpd[10834]: connect from hanzo.hu[127.0.0.1]
Aug 24 19:53:35 hanzo postfix/cleanup[10839]: 89540166C: message-id=<20080824175306.89540166C@hanzo.hu>
Aug 24 19:53:35 hanzo postfix/qmgr[3898]: 89540166C: from=<hron@hanzo.hu>, size=349, nrcpt=1 (queue active)
Aug 24 19:53:35 hanzo postfix/virtual[10841]: 89540166C: to=<root@hanzo.hu>, relay=virtual, delay=42, delays=42/0/0/0.01, dsn=5.1.1, status=bounced (unknown user: "root@hanzo.hu")
Aug 24 19:53:35 hanzo postfix/cleanup[10839]: 6DD752F22: message-id=<20080824175335.6DD752F22@hanzo.hu>
Aug 24 19:53:35 hanzo postfix/qmgr[3898]: 6DD752F22: from=<>, size=1984, nrcpt=1 (queue active)
Aug 24 19:53:35 hanzo postfix/bounce[10846]: 89540166C: sender non-delivery notification: 6DD752F22
Aug 24 19:53:35 hanzo postfix/qmgr[3898]: 89540166C: removed
Aug 24 19:53:35 hanzo postfix/virtual[10841]: 6DD752F22: to=<hron@hanzo.hu>, relay=virtual, delay=0.09, delays=0.02/0/0/0.07, dsn=2.0.0, status=sent (delivered to maildir)

Bizonyitek:


mysql> SELECT address, goto FROM alias WHERE address LIKE 'root@%';
+---------------+----------------+
| address       | goto           |
+---------------+----------------+
| root@hanzo.hu | admin@hanzo.hu |
+---------------+----------------+
1 row in set (0.00 sec)

Es az iment meg is jott a NDR a felado cimere.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Iiigen, ez esetleg megoldas lehetne, csak en azt szeretnem, ha az adminnak tovabbitodnanak ezen levelek, nem pedig egy kulon usernek. Bar vegulis az is megoldas tud lenni, hogy a vegen (mivel ezek a fajlrendszerben kepzodnek le, megpedig Maildir-ek formajaban) symlinkelek egy nagyot. csak ahhoz meg picit mas dolgokat is rendbe kell tennem.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Tudod mi a vicc? Hogy mas szerveren siman megy a dolog (nem Debian), az aliases-bol siman fel tudja venni.
Amugy meg az aliases hashtablabol fel tudja venni a root: -ot is, nem gondolnam, hogy mysql-bol is kellene (benne van az alias maps-ben az aliases).
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

ajanlom a VIRTUAL_README-t olvasasra sokszor egymas utan
nem fog fajni, megigerem!

t

Annyira odavagy azzal a README-vel... bahh.. igen, olvastam. Sot kepzeld el, meg a Google-t is tudom hasznalni! Es igy sem megy. Jo hulye vagyok, mi? Es csodak csodaja, mas szerveren meg megy. Lehet hogy megse en vagyok a hulye?
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Hmm... tudom, hogy nem illik, de nincs ujabb fejlemeny, megoldas nem szuletett, a problema aktiv meg, igy: up!
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Up.

Kozben nyomozgattam egy kicsit, es igen erdekes bizonyitekra bukkantam (hulye a pastebin, igy a @ _AT_ karakterekkel van helyettesitve).
Amikor a klienstol atveszi az RCPT TO: parancsot, akkor megtalalja azt, hogy a root@mittudomain.com az valojaban az admin@mittudomain.com szamara kezbesitendo - innentol viszont elveszti a fonalat, es a vege az, hogy "unknown user" hibaval bounce-ra szalad a level - holott elozoleg _jol_ megtalalja a cimzettet. Ez nagyon Postfix belso hiba szagu... 2.3.8-2+etch1 a verzio, ha ez relevans info...

Kene valami help, mert nem tudok eligazodni innentol kezdve. Minden arra mutat, hogy a felhasznalo megvan - aztan eldobodnak a levelek.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Ugy lett megadva:


HELO server.mittudomain.com
MAIL FROM: hron@mittudomain.com
RCPT TO: root@mittudomain.com
DATA
Subject: Test mail for root@mittudomain.com

Test mail dict_proxy_open
.

A fenti fajl lett netcat-tel beadagolva.

--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

hmm... erdekes otlet. A MySQL alias tablaba megvan, postalias-sal elo is tudom hozni, megprobalhatom a hashtablaba is felvenni, de nem sok ertelmet latom. Mindenesetre megprobalom - attol meg mukodhet.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

hello!

pusztán érdeklődnék, sikerült-e megoldani a problémát? Ugyanezzel a postfix verzióval ugyanez a problémám. Illetve nálam konkrétan úgy néz ki a dolog, hogy usereknek megy a levél, aliasoknak nem :(

A beollózott konfigodat nézve nekem kicsit másabb a helyzet, de egyébként ugyanez a konfig másik 5 gépen tökéletesen müxik. Nem bírok rájönni mi lehet a baja :(

En se jottem ra. A vege az lett, hogy minden explicit konfigot kapott, ahol a root volt a default cimzett (cron, munin). Probaltam aliases-ben meg mysql-ben is beloni, de semmi.
Amit nem sikerult, az meg most csap egy kort, es non-delivery uzenetben bejon az adminnak (o a postmaster).

Az userek mysql-bol jonnek? Leteznek a rendszerben is? A ketto egyutt nem jo dolog! Kaphatnank esetleg konfig reszleteket? A kicsit mas eleg zsenge info a rendszeredrol.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

#alias_maps = hash:/etc/aliases
#alias_database = hash:/etc/aliases

Tehát ez a rész kikommentezve! Userek MySQL -ből jönnek, illetve az aliasok is

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf

/etc/postfix/mysql_virtual_alias_maps.cf tartalma
user = user
password = pass
hosts = localhost
dbname = dbneve
query = SELECT goto FROM alias WHERE address='%s' AND active = 1

postmap -q "alias@domain.hu" mysql:/etc/postfix/mysql_virtual_alias_maps.cf
és gyönyörűen visszaadja: user@domain.hu

Mint mondtam usernek tudok levelet küldeni, alias címre pedig nem.

Ha további konfig-részlet kellene, csak szólj :) Előre is köszönöm, üdv

a postfix bizonyos reszei chrootban futnak, es ha localhost-ot adsz meg mysql elerhetosegkent akkor nem TCP-n hanem file socketen keresztul akarja megnyitni, ami nem fog neki menni.

adj meg localhost helyett 127.0.0.1-et.

asd

chroot eseteben a symlink nem jatszik, ugyanis barmi, ami a chroot-on kivulre mutat, automatikusan torott a chroot-on belul.
Altalaban mount --bind szokott a megoldas lenni, vagy a progik atkonfolasa, hogy ugy egyebkent a postfix chroot-jaban figyeljenek, es a normal helyrol mutat symlink ide.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Hint: akkor mas levelek se jonnenek meg, tekintve hogy a userek 98%-a teljesen virtualis, es csak mysql alapokon letezik.
Amugy meg tapasztalatom szerint mindegy, ha 127.0.0.1 a mysqlclient lib akkor is eloszor socketen probalkozik, es azutan failbackel tcp -re.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

szerintem vagy

a) a virtual chrootolt, ez a /etc/postfix/master.cf filebol kiderul es akkor localhost helyett a 127.0.0.1 a nyero, vagy
b) a virtual nem chrootolt, de nem ott keresi a socketet ahol kell.

Egyebkent meg logolast bekapcsolni erdemes volna a mysql-re csak hogy latszodjon: valoban erkezik-e oda SQL keres.

Addig meg:
main.cf, master.cf, ossze konfiguracios file osszetarolasa, mysql es postfix logok feltetele... akkor lehet, hogy nem csak talalgatnank.

Meg most nem nezem at ujra, de nem is tudom, tok virtualis usereid vannak (virtual deliveryvel), vagy csak sima mailaddress->unixuser mapet csinalsz. Ket virtualbol dolgoznak ugyanis. Az dont, hogy a domain szerepel-e a virtual_mailbox_domains-nal.

Virtual delivery van, a valosagban (pam, nss) nem letezo userekkel. A standardokon kivul az osszes domain, amiert felelos vagyok, virtualbol jon (ez egy webhosting mogotti mailszerver, dinamikusnak kell lennie).

Nem tudok azokhoz a konfigokhoz erdemben hozzatenni semmit, viszont erzekeny cuccokat nem kivanok megosztani senkivel igy nyiltan.

Viszont ugy nez ki megvan a megoldas, a szerver bizonyos okokbol at lett nevezve, es az atnevezes soran a /etc/mailname nem frissult, es azert a "domainert" a postfix nem erzi magat felelosnek. A myorigin meg ebbol akarna dolgozni. Mivel ugyis tervben van egy nagyobb fix, akkor meg lesz szerelve a dolog. Jelenleg nem annyira egeto a dolog, a szerver mukodik enelkul is, csak izgatott, mit szeretne mondani a szerver. Kiderult. Tanulsag: gep atnevezeskor nem felejtunk el a regi nevre 2x grep-elni a /etc alatt.

Koszonom mindenkinek a segitseget.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

jam....

mysql_relay_domains_maps.cf, mysql_virtual_domains_maps.cf, mysql_virtual_mailbox_limit_maps.cf, mysql_virtual_mailbox_maps.cf hajlandó nekem localhoston keresztül kommunikálni, de azért a mysql_virtual_alias_maps.cf fájlban írjak már helyette 127.0.0.1 -et... Érdekes megközelítés...

Arról meg ne is beszéljünk, hogy ugyanezek a konfigok kb 6 másik szerveren tökéletesen működnek. Csak oda nem lett VDA patch-elt deb csomag készítve/telepítve. Azért az elég durva lenne, ha ez lenne a gond, de lassan ott tartok, hogy leszedem őket és felteszem a "gyári" stable csomagokat, hátha... :(

LOG-okban nincs semmi hibaüzenet, csak mikor alias címre akarok levelet küldeni egyzerűen: user unknown, mintha ott se lenne a táblában.