Ich habe einen postfix
E-Mail-Server, der sich mit einer Datenbank in pgbouncer
Verbindung setzt, um E-Mail-Adressen usw. abzufragen und zu überprüfen. Die Verbindung wird hergestellt, um Verbindungen zu durchlaufen Die Datenbank ist unverschlüsselt und kann möglicherweise ein Sicherheitsproblem darstellen.
Ich installierte eine lokale Instanz pgbouncer
auf dem Mailserver zusammen mit stunnel
zumindest auf die beiden die Chance zu geben , eine SSL - Verbindung zwischen den beiden, aber aus irgendeinem infurating Grund anstiften, postfix
durch Sentimentalität, Schädlichkeit oder einfach nur , weil es schlicht hartnäckig weigert zu erfüllen mit der Umstellung. Hier ist ein Beispiel für eine der virtuellen Alias-Suchdateien im Postfix-Verzeichnis:
# -------
# p-alias
# -------
hosts=10.0.0.123
port=6432
dbname=mail
user=user1
password=password
query=SELECT destination FROM v_alias WHERE source = '%s'
Zum Testen können Sie eine Test-E-Mail-Adresse wie diese abfragen
console:~$ postmap -q test@testy.net pgsql:/etc/postfix/p-alias
und das Ergebnis:
tester.mc_testy_tester@test_email_address.com
Alles in Ordnung und gut, um jetzt eine nahezu identische Konfiguration zu erstellen, die auf den lokalen Pooler verweist
console:~$ cp /etc/postfix/p-alias /etc/postfix/p-alias2
console:~$ vi /etc/postfix/p-alias2
ändere die IP in localhost:
# -------
# p-alias2
# -------
hosts=localhost
port=6432
dbname=mail
user=user1
password=password
query=SELECT destination FROM v_alias WHERE source = '%s'
stelle es den gleichen Befehl:
console:~$ postmap -q test@testy.net pgsql:/etc/postfix/p-alias2
und es spuckt den folgenden Fehler aus
postmap: warning: connect to pgsql server localhost: could not connect to server: Connection refused??
Is the server running on host "localhost" (::1) and accepting??
TCP/IP connections on port 5432??
could not connect to server: Connection refused??
Is the server running on host "localhost" (127.0.0.1) and accepting??
TCP/IP connections on port 5432??
postmap: fatal: table pgsql:/etc/postfix/p-alias2: query error: Operation now in progress
Die beiden Bouncer sind nahezu identisch, die pgbouncer.ini-Dateien und die userlist.txt sind identisch. Der einzige bemerkbare Unterschied besteht in ihrem physischen Standort und ihrer Verbindung. Da ich keinen psql
Client auf dem E-Mail-Server installiert habe ( ich habe versucht, über Linux-Distributionen zu viele Abhängigkeiten hinzuzufügen, die mir gefallen), habe ich stattdessen die Abfragen mit Python nachgeahmt, um zu überprüfen, ob mir nichts entgangen ist dumm:
import psycopg2
conn = psycopg2.connect( "host='10.0.0.123' port='6432' dbname=mail user='user1' password='password'" )
dbh = conn.cursor()
dbh.execute( "SELECT destination FROM v_alias WHERE source = 'test@testy.net'" )
dbh.fetchone()
# Result:
# ('tester.mc_testy_tester@test_email_address.com',)
conn.commit()
conn.close()
# -----------------------------------
# All is tickety boo, as it should be
# now let's repeat with the local ip
# -----------------------------------
conn = psycopg2.connect( "host='localhost' port='6432' dbname=mail user='user1' password='password'" )
dbh = conn.cursor()
dbh.execute( "SELECT destination FROM v_alias WHERE source = 'test@testy.net'" )
dbh.fetchone()
# Result:
# ('tester.mc_testy_tester@test_email_address.com',)
conn.commit()
conn.close()
beide haben reibungslos funktioniert, soweit ich das beurteilen kann, sollte es keine probleme geben. Postfix denkt eindeutig anders.
Also nahm ich an, dass vielleicht der Stunnel das Problem war, hier ist die Konfiguration:
client = yes
pid = /var/run/stunnel.pid
[pgbouncer]
protocol = pgsql
accept = 6433
connect = 10.0.0.123:5432
Ich umgehe den pgbouncer und frage den lokalen Stunnel ab
# -------
# p-alias3
# -------
hosts=127.0.0.1
port=6433
dbname=mail
user=user1
password=password
query=SELECT destination FROM v_alias WHERE source = '%s'
postmap weigert sich zu entsprechen
console:~$ postmap -q test@testy.net pgsql:/etc/postfix/p-alias3
postmap: warning: connect to pgsql server 127.0.0.1: could not connect to server: Connection refused??
Is the server running on host "127.0.0.1" and accepting??
TCP/IP connections on port 5432??
postmap: fatal: table pgsql:/etc/postfix/p-alias3: query error: Operation now in progress
kein Glück.
Der Vollständigkeit halber hier ein fairer Teil der pgbouncer.ini
[databases]
; ...
;mail = host=localhost port=6433 dbname=mail
mail = host=10.0.0.123 port=5432 dbname=mail
[pgbouncer]
listen_addr = *
listen_port = 6432
; ...
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
server_reset_query = DISCARD ALL
server_check_query = SELECT 1
server_check_delay = 30
; ...
Ich versuche pgbouncer mit stunnel oder ohne und direkt in die Datenbank und postfix weigert sich zu akzeptieren, dass es einen localhost gibt, er funktioniert mit Python und schlägt mit postmap fehl.
Es ist klar, dass es localhost einfach nicht mag.
Also, Postfix, was willst du von mir? !!!
(Postfix ist Version 2.11.0)