Portál AbcLinuxu, 12. května 2025 09:02

Dotaz: Postfix +mysql

22.1.2009 10:33 Peroslav
Postfix +mysql
Přečteno: 1415×
Odpovědět | Admin

Dobrý den, asi již týden se snažím rozjet e-mail server dle tohoto návodu :

Howto: ISP-style Email Server with Debian-Etch and Postfix 2.3

Předtím jsem používal xmail, který fungoval bezvadně. Bohužel ale nemá imap, který potřebuji na webmail (squirrelmail).

Moje konfigurace je na debian4, postfix 2.3.8, mysql 5.1, devecot 1.0

Pop3 a imap mě fungují a virtuální uživatelé, kteří jsou v databázi se autentizují.

Jediné co mi stále nejde je Postfix (smtp). V logu (mail.log) se stále opakuje tato hláška:

 mail postfix/trivial-rewrite[6505]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/myql
 mail postfix/trivial-rewrite[6505]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
mail postfix/master[1663]: warning: process /usr/lib/postfix/trivial-rewrite pid 6505 exit status 1
 mail postfix/master[1663]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
 mail postfix/qmgr[1714]: warning: premature end-of-input on private/rewrite socket while reading input attribute name
 mail postfix/qmgr[1714]: warning: problem talking to service rewrite: Success

V konfiguračních souborech postfixu (mysql-virtual-alias-maps.cf) atd. mám toto:

user = mailuser
password = *******
host = localhost
dbname = mailserver
query = SELECT destination FROM view_aliases WHERE email='%s'

Ikdyž zaměním v  host např 127.0.0.1 nebo ip 193.85.24x.xxx  stále se postfix nemůže k soketu připojit.

Googlim už 3 dny a nic jsem nenašel, můžete mi prosím pomoci?

 

Děkuji Pepa

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

andree avatar 22.1.2009 11:02 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: Postfix +mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin

nebude skor problem s niecim inym? mas spravne vytvorenu databazu?

mail postfix/trivial-rewrite[6505]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem

...toto je celkom podozrive.. ze sa nepripojis cez socket je "len" warning, pravdepodobne sa mu podari pripojit cez IP.. Vsak to mozes skusit aj rucne, ze - skus co spravi command:

mysql -u mailuser -p ******* "select * from view_aliases"

(resp. to uprav na spravnu syntax :o))

22.1.2009 11:13 Petr Masopust | skóre: 14
Rozbalit Rozbalit vše Re: Postfix +mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ja bych zkontroloval prava na socketu (/var/run/myql... ) a nadrazenych adresarich - mysql i postfix bezi pod jinym uzivatelem.

Dalsi zrada muze byt v tom ze postfix bezi v chrootu kde nema pristup k mysql socketu vubec - to se zjisti nekde v konfiguracich postfixe, ted si to z hlavy nepamatuju.

Pripojeni pres ip adresu by melo jit snad vzdycky, tam byva zrada v skip-networking v mysql konfigraku (pripadne zkontrolovat pres netstat jestli mysql vubec posloucha na nejakem portu). Dalsi mozny problem jsou interni prava v mysql (vetsinou je pristup povolen jen z localhost) nebo firewall.

Na nic jineho jsem snad zatim nenarazil... V tomhle pripade se mi zda nejpravdepodobnejsi skip-networking u mysql a postfix v chrootu.

22.1.2009 12:36 Peroslav
Rozbalit Rozbalit vše Re: Postfix +mysql

Děkuji hned to zkontroluji.....

22.1.2009 16:49 svaca | skóre: 38
Rozbalit Rozbalit vše Re: Postfix +mysql

 Dejme tomu, ze ti MySQL bezi opravdu na: /var/run/myql

 

Pak zkus nahradit ty maps.cf z: 

host = localhost

na : 


hosts = unix:/var/run/mysql/mysql.sock

 

A jeste jednou vsude prekontroluj prava 

Never give up ! Stay ATARI !
22.1.2009 16:50 svaca | skóre: 38
Rozbalit Rozbalit vše Re: Postfix +mysql

 TEDY : hosts = unix:/var/run/mysql 

 

Sakra :-) 

Never give up ! Stay ATARI !
23.1.2009 09:24 Peroslav
Rozbalit Rozbalit vše Re: Postfix +mysql

Dobrý den, měl jste pravdu na sql databázi se šlo připojit jen z IP  ( telnet 193.858.247.xxx :3306). Tak takhle to šlo ale telnet localhost 3306 nebo telnet 127.0.0.1 :3306 nešlo.

Odstaranil jsem z  /etc/mysql/my.cnf skip-networking a přidal řádek bind-address 127.0.0.1. Po restartu databáze se na ní již šlo připojit přes 127.0.0.1 :3306 i localhost.

Dále jste měl pravdu v tom, že konfigurační soubor postfixu (master.cf) spouštěl trivial-rewrite a další služby v chrootu. Proto jsem tento soubor upravil takto :

 

  -Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
postfix   unix  -       -        n        -      -     smtpd
dovecot unix    -    n        n       -       -       pipe
smtp      inet  n       -       n       -       -       smtpd
#submission inet n      -       -       -       -       smtpd
#  -o smtpd_enforce_tls=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps     inet  n       -       -       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#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       -       -       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

 

 

 

Od tohoto kroku, lze již z postfixu e-maily posílat. Moc Vám děkuji za radu.

Zároveň bych Vás chtěl poprosit, co znamená jiná hláška v logu od postfixu. Pokud totiž někomu pošlete e-mail a on na něj odpoví. příjde dotyčnému zpráva, že uživatel, kterému píše na serveru neexistuje... v logu je toto:

 


Jan 23 09:00:07 mail postfix/smtpd[6645]: connect from mxh.seznam.cz[77.75.72.26]
Jan 23 09:00:07 mail postfix/trivial-rewrite[6648]: warning: do not list domain domain.cz in BOTH mydestination and virtual_mailbox_domains
Jan 23 09:00:07 mail postfix/smtpd[6645]: B39CD782179E7: client=mxh.seznam.cz[77.75.72.26]
Jan 23 09:00:07 mail postfix/cleanup[6649]: B39CD782179E7: message-id=<4913.10970-14513-1248657384-1232697349@seznam.cz>
Jan 23 09:00:08 mail postfix/smtpd[6645]: disconnect from mxh.seznam.cz[77.75.72.26]
Jan 23 09:00:08 mail postfix/qmgr[6016]: B39CD782179E7: from=<pepik@seznam.cz>, size=2113, nrcpt=1 (queue active)
Jan 23 09:00:08 mail postfix/trivial-rewrite[6648]: warning: do not list domain pro-net.cz in BOTH mydestination and virtual_mailbox_domains
Jan 23 09:00:08 mail postfix/local[6708]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Jan 23 09:00:08 mail postfix/local[6708]: B39CD782179E7: to=<pepik@domain.cz>, relay=local, delay=0.59, delays=0.55/0.01/0/0.04, dsn=5.1.1, status=bounced
Jan 23 09:00:08 mail postfix/cleanup[6649]: 4C6AB782179EC: message-id=<20090123080008.4C6AB782179EC@mail.domain.cz>
Jan 23 09:00:08 mail postfix/qmgr[6016]: 4C6AB782179EC: from=<>, size=3865, nrcpt=1 (queue active)
Jan 23 09:00:08 mail postfix/bounce[6709]: B39CD782179E7: sender non-delivery notification: 4C6AB782179EC
Jan 23 09:00:08 mail postfix/qmgr[6016]: B39CD782179E7: removed
Jan 23 09:00:10 mail postfix/smtp[6721]: 4C6AB782179EC: to=<pepik@seznam.cz>, relay=mx50.seznam.cz[77.75.73.47]:25, delay=2.3, delays=0.04/0.01/2/0.21
Jan 23 09:00:10 mail postfix/qmgr[6016]: 4C6AB782179EC: removed
Jan 23 09:03:28 mail postfix/anvil[6647]: statistics: max connection rate 1/60s for (smtp:77.75.72.26) at Jan 23 09:00:07
Jan 23 09:03:28 mail postfix/anvil[6647]: statistics: max connection count 1 for (smtp:77.75.72.26) at Jan 23 09:00:07
Jan 23 09:03:28 mail postfix/anvil[6647]: statistics: max cache size 1 at Jan 23 09:00:07
Jan 23 09:08:42 mail postfix/smtpd[20595]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Jan 23 09:08:42 mail postfix/smtpd[20595]: connect from unknown[88.243.51.148]

 

 

Nevíte proč postfix nemůže z virtual_domains dohledat danou doménu a uživatele?

Děkuji za odpovědi.

23.1.2009 10:49 Ripper | skóre: 31
Rozbalit Rozbalit vše Re: Postfix +mysql

TAk sem dejte konfigurák postfixu main.cf.

23.1.2009 10:55 Peroslav
Rozbalit Rozbalit vše Re: Postfix +mysql

Zde je konfigurák main.cf

 


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP Ahoj ty kravo zdravi te $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
#append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
delay_warning_time = 4h

# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

#alias_maps = hash:/etc/aliases, nis:mail.aliases
#alias_database = hash:/etc/aliases
#myorigin = $localhost
mydestination = $myhostname, localhost
mailbox_size_limit = 512000000
recipient_delimiter = +


virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_uid_maps=static:5000
virtual_gid_maps=static:5000
virtual_minimum_uid=5000
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit=1
virtual_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf







mail_version = 2.3.8

 

Děkuji
 

23.1.2009 11:03 svaca | skóre: 38
Rozbalit Rozbalit vše Re: Postfix +mysql

 Tohle je napriklad blbe: myorigin = $mydomain

ma tam byt: myorigin = $myhostname

 

JE to jasne popsane v dokumentci: http://www.postfix.org/VIRTUAL_README.html

 

 

Never give up ! Stay ATARI !
23.1.2009 11:34 Peroslav
Rozbalit Rozbalit vše Re: Postfix +mysql

Omlouvám se, ale již to rozchazuji 7 dní a tak jsem vyzkoušel všechno co mě napadlo.  Některé pokusy jsem nevrátil zpátky jako například myorigin = $myhostname .

Měl jsem ten konfigurák otevřený už asi 50x , takže už jsem tu chybu přehlédl..Nicméně po této změně se v logu vyskytuje stále hlášla, že uživatel neznámý, ikdyž v sql existuje..

Zde je opět výpis z mail.log:


Jan 23 11:15:44 mail postfix/smtpd[16122]: connect from mxh.seznam.cz[77.75.72.26]
Jan 23 11:15:44 mail postfix/smtpd[16122]: 8D15778217A03: client=mxh.seznam.cz[77.75.72.26]
Jan 23 11:15:44 mail postfix/cleanup[18798]: 8D15778217A03: message-id=<4939.11018-28993-1759516747-1232705486@seznam.cz>
Jan 23 11:15:44 mail postfix/qmgr[6309]: 8D15778217A03: from=<pepik@seznam.cz>, size=1466, nrcpt=1 (queue active)
Jan 23 11:15:44 mail postfix/smtpd[16122]: disconnect from mxh.seznam.cz[77.75.72.26]
Jan 23 11:15:44 mail postfix/pipe[18805]: fatal: missing user= command-line attribute
Jan 23 11:15:45 mail postfix/master[6302]: warning: process /usr/lib/postfix/pipe pid 18805 exit status 1
Jan 23 11:15:45 mail postfix/master[6302]: warning: /usr/lib/postfix/pipe: bad command startup -- throttling
Jan 23 11:15:45 mail postfix/qmgr[6309]: warning: premature end-of-input on private/dovecot socket while reading input attribute name
Jan 23 11:15:45 mail postfix/qmgr[6309]: warning: private/dovecot socket: malformed response
Jan 23 11:15:45 mail postfix/qmgr[6309]: warning: transport dovecot failure -- see a previous warning/fatal/panic logfile record for the problem description
Jan 23 11:15:45 mail postfix/qmgr[6309]: 8D15778217A03: to=<k.srb@hzt.cz>, relay=none, delay=1, delays=0.03/1/0/0, dsn=4.3.0, status=deferred (unknown mail tr
 

NEvím co my tím postfix říká : warning: /usr/lib/postfix/pipe: bad command startup -- throttling

 

 

 

23.1.2009 12:03 Peroslav
Rozbalit Rozbalit vše Re: Postfix +mysql

Omlouvám se že stále otravuji, jde mi o to že virtuální transport provádí dovecot.

Nyní mi to v logu píše tuto hlášku.

Jan 23 12:01:29 mail postfix/smtpd[985]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Jan 23 12:01:29 mail postfix/smtpd[985]: connect from mxh.seznam.cz[77.75.72.26]
Jan 23 12:01:29 mail postfix/smtpd[985]: 67CD178217A09: client=mxh.seznam.cz[77.75.72.26]
Jan 23 12:01:29 mail postfix/cleanup[989]: 67CD178217A09: message-id=<4939.11018-1489-1984746417-1232708231@seznam.cz>
Jan 23 12:01:29 mail postfix/qmgr[28530]: 67CD178217A09: from=<pepik@seznam.cz>, size=1497, nrcpt=1 (queue active)
Jan 23 12:01:29 mail postfix/smtpd[985]: disconnect from mxh.seznam.cz[77.75.72.26]
Jan 23 12:01:29 mail postfix/pipe[990]: fatal: missing user= command-line attribute
Jan 23 12:01:30 mail postfix/master[28520]: warning: process /usr/lib/postfix/pipe pid 990 exit status 1
Jan 23 12:01:30 mail postfix/master[28520]: warning: /usr/lib/postfix/pipe: bad command startup -- throttling
Jan 23 12:01:30 mail postfix/qmgr[28530]: warning: premature end-of-input on private/dovecot socket while reading input attribute name
Jan 23 12:01:30 mail postfix/qmgr[28530]: warning: private/dovecot socket: malformed response
Jan 23 12:01:30 mail postfix/qmgr[28530]: warning: transport dovecot failure -- see a previous warning/fatal/panic logfile record for the problem description
Jan 23 12:01:30 mail postfix/qmgr[28530]: 67CD178217A09: to=<k.srb@hzt.cz>, relay=none, delay=1, delays=0.02/1/0/0, dsn=4.3.0, status=deferred (unknown mail t
 

23.1.2009 12:08 svaca | skóre: 38
Rozbalit Rozbalit vše Re: Postfix +mysql

 To ja vim, to jsem videl, ale byla tam chyba jeste s domenama, jde o to, ze kdyz mas virtualni domeny pes posfix, tak ve SKUTECNOSTI mas 2 domeny, virtualni (tech muze byt vic) a tu lokalni ..., takze tamto jsi uz opravil, super .. 

 

Vypadato, ze dalsi chyby jsou v dovecotu, takze: 

 

1. postni dovecot-mysql.conf (pozor ! V dovecot 1.0 a 1.1 je zmena v autorizaci hesel) 
2. postni dovecot.conf, tam buoou dalsi chyby, 

Never give up ! Stay ATARI !
23.1.2009 12:11 svaca | skóre: 38
Rozbalit Rozbalit vše Re: Postfix +mysql

 http://wiki.dovecot.org/AuthDatabase/SQL

 

a halvne: http://wiki.dovecot.org/Authentication/PasswordSchemes

Never give up ! Stay ATARI !
23.1.2009 12:56 rajo AT platon.sk
Rozbalit Rozbalit vše Re: Postfix +mysql
Odpovědět | | Sbalit | Link | Blokovat | Admin

Postfixove daemony bezia povacsinou v chroote a v chroote MySQL socket nemas. Ak do connect stringu napises "localhost", tak sa to na MySQL nepripaja cez TCP  na port 3306, ale ide to cez socket. Riesenim je napisat host = 127.0.0.1 , potom sa nebude pripajat cez socket, ale cez TCP. Toto spravanie nie je takmer nikde spomenute.

Vyskusaj.

23.1.2009 14:45 Peroslav
Rozbalit Rozbalit vše Re: Postfix +mysql


Děkuji za rychlé komentáře, takže do všech host jsem dal 127.0.0.1 .
Za další jsem našel, že jsem do konfiguračního souboru master.cf jsem zapomněl přidat toto (tímto se všem omlouvám):
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Teď už mi dovecot vše doručuje do schránky.
Jinak postfix mi nejde v chrootu, v konfiguračním souboru jsem dal chmod n pro všechny démony.
Po vložení tohoto mi již email přijímá i odesílá.
Všem moc děkuji za postrčení a označení chyb.

Pepa


 

23.1.2009 15:29 svaca | skóre: 38
Rozbalit Rozbalit vše Re: Postfix +mysql

 Hlavne mi pripada, ze jsi to cele sil takovou horkou jehlou :-)  Pokud jsi jel podle toho navodu, co jsi psal na zacatku, ktery se skvely , priste pomaleji ... ~Tohle byly celkem zasadni chyby :-) 

Never give up ! Stay ATARI !

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.