Назад | Перейти на главную страницу

Руководство по ISPmail

Я следую известному руководству и нахожусь на этот шаг

Однако у меня проблема при попытке запустить

postmap -q example.org mysql:/etc/postfix/mysql-virtual-box-domains.cf

Я получил:

postmap: предупреждение: подключиться к серверу mysql 127.0.0.1: потеряно соединение с сервером MySQL при «чтении начального пакета связи», системная ошибка: 0

Однако я могу подключиться к mysqld через mysql: mysql -u mailuser -p, с паролем "foo". Файл .cf выглядит так:

user = mailuser
password = foo
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

В чем может быть проблема?

Дополнение

Соответствующая часть из my.cf выглядит так:

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 16K
myisam_sort_buffer_size = 8M

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
bind-address = 127.0.0.1

запустите postmap с более подробным выводом и опубликуйте вывод здесь. Надеюсь, вы получите полезную информацию.

postmap -vvvq example.org mysql:/etc/postfix/mysql-virtual-box-domains.cf

mysqld может прослушивать как локальный сокет, так и сокет tcp / ip. По умолчанию он подключается к локальному сокету (именно так вы подключаетесь к нему при запуске «mysql» в командной строке). postgres пытается подключиться через сокет tcp / ip на localhost, но безуспешно.

Итак, заставьте mysqld прослушивать оба типа интерфейса (или выясните, почему это не так, если он должен быть), или заставьте postgres использовать локальный сокет.

Чтобы смоделировать, что делает postgres из командной строки BTW, вы можете запустить его следующим образом:

mysql -u mailuser -h 127.0.0.1 -p