Автор Тема: postfix + mysql  (Прочетена 4011 пъти)

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
postfix + mysql
« -: Feb 10, 2006, 22:25 »
Здравейте на всички,

Започнах да се занимавам с инсталирането на мейл сървър. Но ми е за първи път. Реших да почна направо с postfix. Но ми е необходимо да поддържа няколко домейна. Но нещо не мога да се оправя.
Самия сървър с един реален домейн работи - праща и приема.
Но имам проблеми с интеграцията му с mysql.
Следвах подробно тази статия
http://postfixwiki.org/index.p....L_Setup
Компилирах самия постфикс с подръжка на mysql и мисля че стана - поне като съдя какво ми излизаше на козолата при компилацията преди и след това.
Създал съм си необходимите таблици в базата, както и потребителя на postfix - postfix.
mysql -u postfix -p ...... си влиза в базата
но като стартирам демона:
Feb 10 22:18:03 mailer postfix/master[994]: daemon started -- version 2.2.8, configuration /etc/postfix
Feb 10 22:18:04 mailer postfix/pickup[995]: 17C1E153FC: uid=0 from=<root>
Feb 10 22:18:04 mailer postfix/cleanup[997]: 17C1E153FC: message-id=<20060210201804.17C1E153FC@edi_kakvo_si>
Feb 10 22:18:04 mailer postfix/cleanup[997]: warning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (111)
Feb 10 22:18:04 mailer postfix/cleanup[997]: warning: 17C1E153FC: virtual_alias_maps map lookup problem for root@ffffffff
Feb 10 22:18:04 mailer postfix/pickup[995]: warning: maildrop/C1AD8153E4: Error writing message file
Feb 10 22:18:04 mailer postfix/pickup[995]: 3B0FA153FC: uid=0 from=<root>
Нещо яко бъркам...
последните редове от main.cf

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:12345
virtual_mailbox_base = /usr/local/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 12345
virtual_transport = virtual
virtual_uid_maps = static:12345
Тези файлове също са създадени по инструкциите.
На няколко места в гуугл намерих че се заменя localhost  с 127.0.0.1, но и това не помага.
Всякаква помощ би ми била полезна
Става дума за slackware - 10.2; 2.4.32, mysql mysql-4.1.14-i486-1
postfix-2.2.8
Активен

vlad73

  • Напреднали
  • *****
  • Публикации: 130
    • Профил
postfix + mysql
« Отговор #1 -: Feb 11, 2006, 14:08 »
Може би иде реч за грешки и в другите .cf файлове. Та ако искаш дай тяхното съдържание. Все пак погледни mysql-a преди това (и аз си патих с MySQL-а  и неговото виждане за localhost). Всъщност под localhost за MySQL се разбира връзка през сокет, а при 127.0.0.1 - връзко по tcp, порт 3306. Та ако си създал юзера, дето ще се връзва да има права от localhost, а не от 127.0.0.1 това може да ти е проблем, все пак погледни и с netstat дали mysql-a слуша на 127.0.0.1:3306
успех! '<img'>
П.С.: Изглежда ми, че ти работи mysql поддръжката в postfixa, като не бях я активирал, имах доста екзотични съобщения за непознати протоколи или методи из логовете си. '<img'>
Активен

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
postfix + mysql
« Отговор #2 -: Feb 11, 2006, 14:59 »
netstat -a
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  4      [ ]         DGRAM                    60     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     215    /dev/gpmctl
unix  2      [ ACC ]     STREAM     LISTENING     535    /var/run/mysql/mysql.sock
unix  2      [ ]         DGRAM                    166
unix  2      [ ]         DGRAM                    63
cat /etc/postfix/master.cf
#
# Postfix master process configuration file.  For details on the format
# of the file, see the Postfix master(5) manual page.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#submission inet n      -       n       -       -       smtpd
#       -o smtpd_etrn_restrictions=reject
#       -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps    inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission   inet    n       -       n       -       -       smtpd
#  -o smtpd_etrn_restrictions=reject
#  -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
        -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
old-cyrus unix  -       n       n       -       -       pipe
  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
cyrus     unix  -       n       n       -       -       pipe
  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
Това беше съдържанието на master.cf
Грешките които дава заради това че не поддържа mysql бяха други, мисля че се справих с този проблем като четох из гуъгл.
Как мога оправя проблема с mysql?
 mysql -h localhost -u postfix -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 4.1.14

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> exit
Това така работи. Не съм променял нищо по настройките на постфикс освен най-необходимите неща - спрямо статията на Н. Антoнов.

Това е съдържанието на /etc/my.cnf

[client]
#password       = your_password
port            = 3306
socket          = /var/run/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/run/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K

# 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
# (using the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking
server-id       = 1

# Uncomment the following if you want to log updates
#log-bin

# Uncomment the following if you are NOT using BDB tables
#skip-bdb

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout
Активен

vlad73

  • Напреднали
  • *****
  • Публикации: 130
    • Профил
postfix + mysql
« Отговор #3 -: Feb 11, 2006, 16:39 »
Дай да видим /etc/postfix/mysql_virtual_alias_maps.cf примерно.
Аз съм пуснал връзката по tcp, честно казано нямам идея как да опиша сокета в .cf файл на postfix-a.

Всъщност сигурен ли си, че postfix-a ползва сокет? С mysql -h 127.0.0.1 -u postfix -p дали отново влизаш? А някакви простички операции с базата работят ли от името на този user?
use <mail-db_name>;
select * from <ime-na-njakoja-tablica>;
Активен

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
postfix + mysql
« Отговор #4 -: Feb 11, 2006, 17:14 »
root@mailer:~# mysql -h 127.0.0.1 -u postfix -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

Да всички операции работят в самия mysql

cat /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = edi_kvo_si
hosts = 127.0.0.1
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = 1


когато адреса е localhost пак не става
май нещо трябва да променя по настройките на mysql...
Активен

n_antonov

  • Напреднали
  • *****
  • Публикации: 1185
    • Профил
    • WWW
postfix + mysql
« Отговор #5 -: Feb 11, 2006, 17:40 »
Както сам виждаш надявам се, проблемът е в твоя mysql.
Активен

-------------------------------------------------------------------------
./debian/rules

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
postfix + mysql
« Отговор #6 -: Feb 11, 2006, 19:00 »
Да благодаря, оправих се. Имах тази опция която разрешава ползването на mysql само по sockets. Страното беше че тя беше набутана в стартиращият скрип на slack -a.

Сега обаче имам проблем с postfixadmin
[Sat Feb 11 19:56:02 2006] [error] PHP Warning:  mysql_real_escape_string(): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (13) in /web/functions.inc.php on line 131
[Sat Feb 11 19:56:02 2006] [error] PHP Warning:  mysql_real_escape_string(): A link to the server could not be established in /web/functions.inc.php on line 131

Нали тези данни за postfixadmin -а се записват само в config.inc.conf. Поне според документацията на postfixadmin това е така (струва ми се че е много оскъдна)

Това са редовете от config.inc.php:
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = '127.0.0.1';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'edi_kakvo_si';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';

Става дума за postfixadmin-2.1.0
Инсталирал съм всичко спрямо правилата.

Имам и един дръг въпрос. Този админ може ли да се ползва като уеб поща(нещо като squirrel mail)?
Активен

vlad73

  • Напреднали
  • *****
  • Публикации: 130
    • Профил
postfix + mysql
« Отговор #7 -: Feb 11, 2006, 20:08 »
Цитат
root@mailer:~# mysql -h 127.0.0.1 -u postfix -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

Да всички операции работят в самия mysql

Аз не бих казал, че са много работещи тези операции. Доколкото ти огледах conf-a на mysql-a, мисля, че той слуша за мрежови заявки (все пак го провери това, че не съм много навътре с mysql-a), предполагам остава юзера да получи право да се логва... ще трябва да поразпиташ google, успех и да споделиш резултата. '<img'>
Активен

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
postfix + mysql
« Отговор #8 -: Feb 12, 2006, 10:52 »
Извинявай, но явно съм редактирал горното си съобщ. след като ти си написал твоето. Ще може ли да погледнеш
Активен

vlad73

  • Напреднали
  • *****
  • Публикации: 130
    • Профил
postfix + mysql
« Отговор #9 -: Feb 12, 2006, 21:24 »
Не ползвам postfixadmin, но все пак като webmail съм убеден че няма да работи, използвай squirrelmail-a, инсталира се просто с копиране и се настройва с малко ръчкане с един perl-скрипт, дето сичко си пита (на мен ми отне 10 мин първия път).

Колкото до проблема apache-php-mysql - там съм доста бос и едва ли мога да съм полезен. От това, което си написал ми се струва, че пак имаш проблем с local socket/tcp:
Цитат
[Sat Feb 11 19:56:02 2006] [error] PHP Warning:  mysql_real_escape_string(): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (13) in /web/functions.inc.php on line 131

Най-безболезнено ми се види ако вземеш пак да подкараш нещата (с този юзер) да работят през сокет... естествено без да затриваш постигнатото за 127.0.0.1 '<img'>
Разбира се може и да греша - пак повтарям бос съм по темата. Успех! '<img'>
Активен

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
postfix + mysql
« Отговор #10 -: Feb 13, 2006, 17:27 »
Здравейте на всички отново,
Аз някак си се орпавих сам но исках днес да напиша как се справих за да може ако някой занапраед се сблъска с това да може да прочете някаде и на БГ.
Поравих се из страницата на постфиксадмин и това намерих в форума им:
if ($CONF['database_type'] == "mysql")  $escaped_string = mysql_real_escape_string ($string);
      if ($CONF['database_type'] == "mysql")
      {
         if ( ! @mysql_thread_id() ) db_connect();
         $escaped_string = mysql_real_escape_string ($string);
      }
      if ($CONF['database_type'] == "mysqli")  $escaped_string = mysqli_real_escape_string ($string);

      if ($CONF['database_type'] == "pgsql")  $escaped_string = pg_escape_string ($string);

трябва да се добавят няколко реда във файла functions.inc.php
Успех на всички. Всичко до тук работи много добре.


Искам да попитам - какво бихте казали че е най-подходящо за WEB MAIL?
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Postfix + SASL2 + MySQL authentication
Хардуерни и софтуерни проблеми
wfw 5 3222 Последна публикация Jan 09, 2005, 15:15
от n_antonov
Postfix+mysql
Настройка на програми
Explisit 3 1928 Последна публикация Jan 23, 2007, 20:09
от Explisit
Postfix+mysql+virtual domains q.?
Настройка на програми
lod 3 2240 Последна публикация Apr 09, 2008, 23:47
от k4BIG
Postfix + MySQL
Настройка на програми
d3v1ous 19 3671 Последна публикация Aug 12, 2009, 16:37
от ntrance
Postfix, MySQL & Dovecot Lda
Настройка на програми
d3v1ous 1 2301 Последна публикация Jun 24, 2011, 16:21
от Ali Nebi