PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postgresql 8.1 / Postfix / Ubuntu - unix:/var/run/postgresql nicht augelöst?



karru
19.09.2006, 02:37
Hallo liebes Bördlein.

Vorweg, für diesen Thread gibt es wahrscheinlich nicht "das richtige Board", also pack ich das hier jetzt mal nach Datenbanken. Vielleicht passt es aber auch zu Mailserver oder Ubuntu - ich weiß es nicht...

Zu meiner Herausforderung... Ich versuche einen Postfix-Mailserver mit Postgress als Datenbank auf einem Ubuntu-Server 6.10 (selbstinstalliert auf einem virtuellen Root) angelehnt am Tutorial aus dem Gentoo-Wiki aufzusetzen.
Link: http://gentoo-wiki.com/HOWTO_Email:_A_Complete_Virtual_System_-_Postfix

Mal einen bisschen zum Softwarestand:
Postgres 8.1 - läuft, per standard Socket, also /var/run/progresql, ohne -i also nix TCP
Postfix 2.x - läuft, wenn die virtual_*-Direktiven auskommentieret sind... s.u.
Postfixadmin - läuft, eher unwichtig jetzt...

Nun zu meinem merkwürdigen Problem:
Sobald ich die virtual_*-Direktiven in der Konfiguration von Postfix einbaue und den Server neustarte, kann ich mich zwar noch mit dem Server per Port 25 verbinden, allerdings passiert nichts...

Hier ein paar Ausschnitte aus den Konfigurationen:

/etc/postfix/main.cf

virtual_mailbox_domains = pgsql:/etc/postfix/pgsql/pgsql-virtual-domains.cf
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql/pgsql-virtual-maps.cf
virtual_uid_maps = pgsql:/etc/postfix/pgsql/pgsql-virtual-uid.cf
virtual_gid_maps = pgsql:/etc/postfix/pgsql/pgsql-virtual-gid.cf
virtual_alias_maps = pgsql:/etc/postfix/pgsql/pgsql-virtual.cf

Die /etc/postfix/pgsql/pgsql-virtual*-Dateien haben alle das gleich Muster, hier auch ein Beispiel:

/etc/postfix/pgsql/pgsql-virtual.cf
user = postfix
password = SOMEPW
dbname = postfix
hosts = unix:/var/run/postgresql
table = alias
select_field = goto
where_field = address
additional_conditions = and active = 'true'

Habe als Wert für hosts schon localhost/ip, Externe ip (was eig. unsinig ist, wegen den Host-Zugriffsrechten... :D), unix:/var..., /var... oder die Variable komplett weglassen ausprobiert. Damit bin ich also mit meinem Try&Error am Ende... :D

Merkwürdig finde ich auch, dass in der Konsole weder ein `psql -h unix:/var/run/postgresql -U postfix postfix` noch ein `psql -h localhost -U postfix postfix` funktioniert... (ohne -h funktioniert es)

Was ich auch sehr bedenklich fand/finde, bei der Installation von Postfixadmin 2.1 musste ich aus dem connection_string der PHP-Funktion `pg_connect` die Angabe des Hostes entfernen, sonst ist einfach nichts passiert - keine Fehlermeldung, nix. Nach der Anpassung funktionierte es allerdings Fehlerlos.

So langsam bin ich ziemlich ratlos, warum es teils funktioniert, teils nicht...
Ich hoffe, dass mir hier jemand auf die Sprünge helfen kann.

:think:

danke, gruß und gute Nacht - karru

theton
19.09.2006, 08:16
Ich denke, dass es sich hier eindeutig um ein Datenbank-Problem handelt. 'localhost' duerfte uebrigens der richtige Weg sein um mit der DB zu connecten. Frage: Wenn du nicht mit der DB verbinden kannst, wie hast du dann den User postfix@localhost angelegt?

karru
19.09.2006, 08:52
Das geht vielleicht etwas undeutlich aus dem Thread hervor (siehe uhrzeit x-)) aber ich kann mich ja mit der Datenbank verbinden.

Folgende Verbindungen haben bisher funktioniert:

psql -U username datenbank - z.b. 'psql -U postfix postfix' o. 'psql -U postgres postfix'
psql -h /var/run/postgresql -U username datenbank
webmin postfix modul
php, pg_connector - aber nur *ohne* angabe von "host=..." - zb. pg_connect("dbname=postfix user=postfix pass=Passw0rd")


Was nicht bisher funktionierte:

psql -h unix:/var/run/postgresql -U username datenbank - ist die richtige Formulierung nicht eigentlich so?!
php, pg_connector - pg_connect("host=XXX dbname=postfix user=postfix pass=Passw0rd") - wobei XXX mit folgenden werden getestet wurde: '/var/run/postgresql', 'unix:/var/run/postgresql', 'localhost', '127.0.0.1'
Verbindung per Postfix


Da dies mein erster Kontakt mit Postgresql ist, hab ich vielleich auch was in der host-konfiguration falsch gemacht, folgend mal die Datei /etc/postgresql/8.1/main/pg_hba.conf:
local all postgres password
local postfix postfix,postfixadmin password

Was mit gerade auffällt, wenn ich auf dem Server ein 'telnet 127.0.0.1 5432' ausführen möchte, bekomme folgende Fehlermeldung:
# telnet 127.0.0.1 5432
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Invalid argument
Allerdings läuft der Server:
# netstat -tanp | grep 127.0.0.1
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -Und weiter unten:

unix 2 [ ACC ] STREAM HÖRT 2551772932 - /var/run/postgresql/.s.PGSQL.5432


Hat jemand noch eine Idee?

danke, gruß, karru

lordlamer
19.09.2006, 09:20
Hi,

postgres ist der superuser für postgresql. mit dem kann man sich immer verbinden. was du machen solltest ist

su - postgres
createuser username
[createdb dbname]

achte bei createuser darauf das du das passwort verschlüsselt speichern lässt! --help ist dein freund ;)

dann musst du deine pg_hba.conf anpassen. und zwar so das man sich per tcp anmelden kann.

ausm kopfraus irgendwie so:
host 127.0.0.1 255.255.0.0 md5

ansonsten mal die logfiles checken! da steht auch immer was drin!

mfg frank

karru
19.09.2006, 10:10
hey,

die datenbanken und benutzer gibt es ja. postfixadmin funktioniert ja schon wunderbar damit.
ich möchte ja auch garkeine verbindung per tcp sondern per unixsocket, aber postfix mag es nicht...

in dem logfile steht nichts drin, das war natürlich auch mein erster anlaufpunkt :)

was mich gerade etwas durcheinander bringt ist folgendes:

# psql -h unix:/var/run/postgresql -U postfix postfix
psql: could not translate host name "unix:/var/run/postgresql" to address: Name or service not known

doch nicht... mit psql -h /var/run/postgresql/ -U postfix postfix funktioniert es...

Ich bin verwirrt... :D

//EDIT:
Was mir gerade noch mehr sorgen bereitet, ich kann generell keine verbindungen zu localhost herstellen.


# netstat -tanp
Aktive Internetverbindungen (Server und stehende Verbindungen)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN -
tcp 0 0 <ext-ip>:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
# telnet 127.0.0.1 80
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Invalid argument
# telnet 127.0.0.1 21
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Invalid argument
# telnet <ext-ip> 21
Trying <ext-ip>...
telnet: Unable to connect to remote host: Invalid argument
# telnet google.de 80
Trying 66.249.93.104...
Connected to google.de.
Escape character is '^]'.
Ich hab stark das Gefühl, dass es damit zusammenhängt...
Google bringt mich nicht sehr weit, hat jemand hier eine Idee?


Dank und gruß Karru

lordlamer
19.09.2006, 10:40
läuft postfix inner chroot umgebung? mal die master.conf checken!

sono
19.09.2006, 10:41
Lies mal die Errorlogs von deinem PostfixServer durch.
In denen steht ziemlich genau warum es ned geht.

Meistens sind das kleine Configurationsprobleme. Du könntest btw in der pg_hba.conf deinen Mailserveruser so konfigurieren, dass du für den lokalen zugriff auf die MailDb kein Passwort benötigst.

Lies aber wie gesagt die Logs von Postfix in /var/log/ durch, und wenn dir ned klar sein was postfix will, weisch ja wohin mit.

Ps
Wenn du die Conf fertig hast, kann ich die dann mal sehen? Ich hab nen Postfix an ner Mysql und will auf Postgres umbauen.

Gruß Dominik

karru
19.09.2006, 10:47
Ps
Wenn du die Conf fertig hast, kann ich die dann mal sehen? Ich hab nen Postfix an ner Mysql und will auf Postgres umbauen.Siehe das supertutorial von gentoo-wiki.com.
Für dich ist das Kapitel "Postfix to Postgres" interessant. Ich find das alles recht selbsterklärend:
http://gentoo-wiki.com/HOWTO_Email:_A_Complete_Virtual_System_-_Postfix_to_Postgres

gruß Karru



/**** EDIT ****/
Und wiedereinmal bringe ich den Beweis zur Existens der menschen BLÖDHEIT:


Sep 19 11:51:38 vs189083 postfix/cleanup[10095]: fatal: dict_open: unsupported dictionary type: pgsql: Is the postfix-pgsql package installed?
(hab immer nur ins postgres log geguckt ...)

Nun funktionierts - auch mit Sockets.

KEIN KOMMENTAR - dankend und kotzend, euer Karru


PS.1:
Die Sache mit der Verbindung zu localhost:
Da ich auf einem virtuellem Server bin, wurde die Datei /etc/network/interfaces bei jedem Systemstart zurückgesetzt und ich musste folgendes machen um die Verbindungsprobleme zu beheben:

echo "auto lo" >> /etc/network/interfaces.template
echo "iface lo inet loopback" >> /etc/network/interfaces.template

PS.2:
Da ich im Netz bisher keine (funktionierendes) Tutorial für einen Postfix-Mailer unter Ubuntu mit Postgres und virtuellen Domains gefunden hab, werd ich in naher Zukunft hier mal ein Tutorial ausarbeiten...