[Gentoo] postifx virtual_alias_maps über mysql / encoding probleme

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
itti
Posts: 49
Joined: 2004-10-25 21:16

[Gentoo] postifx virtual_alias_maps über mysql / encoding probleme

Post by itti » 2006-06-26 22:34

Hi,

letztens hat gentoo ja den mysql fest auf UTF-8 umgestellt was einige probleme im zusammenspiel mit php gab... dafür gabs ein dediziertes php-update und nun hört php auch auf /etc/mysql/my.cnf bzw. liest daraus ab dass queries trotzdem in latin1 zu stellen sind, denn ich hab meine datenbanken nach wie vor in latin1.

nachdem dieses problem also aus der welt ist habe ich probleme mit meinem postfix. folgende fehlermeldung habe ich aus /var/log/mail.log fischen können, beim postfix startup:

Code: Select all

postfix/proxymap[7592]: warning: mysql query failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
das sagt mir also postfix stellt die anfragen in utf-8, die daten sind aber in latin1, weshalb ein vergleich nicht möglich ist. richtig?

das resultiert dann in netten fehlermeldungen die sich so ungefähr endlos wiederholen (auch mit gänzlich anderen emailadressen...):

Code: Select all

postfix/cleanup[7591]: warning: C89517CC051: virtual_alias_maps
map lookup problem for izmir@?bel.com
Jun 26 22:09:52 p15198025 postfix/pickup[7585]: warning: maildrop/432157CC05B: Error writing message file
wie kann ich jetzt postfix dazu "bringen" die queries bzw. die mysqlverbindung in latin1 aufzubauen?

verwendet wird gentoo auf nem amd64 system. alle pakete laufend gepflegt.dev-db/mysql-4.1.20 und mail-mta/postfix-2.2.10


in main.cf deutet

Code: Select all

 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_alias_maps.cf 
auf diese datei:

Code: Select all

user = syscp
password = xyz
dbname = syscp
table = mail_virtual
select_field = destination
where_field = email
additional_conditions = and destination <> '' and destination <> ' '
hosts = localhost
wie man sieht gehört das zu nem teil meiner syscp installation.
kann mir da jemand auf die sprünge helfen?

duergner
RSAC
Posts: 976
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: [Gentoo] postifx virtual_alias_maps über mysql / encoding probleme

Post by duergner » 2006-06-26 22:49

Soweit ich weiss sollte Postfix eigentlich die Einstellungen fuer [mysql] aus der /etc/mysql/my.cnf verwenden. Sind die Charsets vielleicht nur fuer den Server angeben und fuer den Client nicht? Dann sollte es eigentlich helfen, dort die Einstellung auch auf latin1 zu aendern.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11578
Joined: 2003-02-27 01:00
Location: Hamburg

Re: [Gentoo] postifx virtual_alias_maps über mysql / encoding probleme

Post by Joe User » 2006-06-26 23:21

Alternativ zu duergners Vorschlag kannst Du MySQL auch mit USE="latin1 -utf8" rekompilieren, sofern Deine anderen MySQL-Applikationen problemlos auf latin1 umstellen lassen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

itti
Posts: 49
Joined: 2004-10-25 21:16

Re: [Gentoo] postifx virtual_alias_maps über mysql / encoding probleme

Post by itti » 2006-06-27 03:22

danke soweit ;)

joes vorschlag wollte ich nur als finale lösung anvisieren, das neue useflag ist mir in der tat aufgefallen... ich hab aber eher vor bei zeiten komplett auf utf-8 zu gehen.

welchen eintrag benötige ich für die my.cnf? alles was dort bereits steht ist auf latin-1.

hier my.cnf:

Code: Select all

[php-apache2handler]
character_set         = latin1
character-sets-dir    = latin1
default-character-set = latin1

[php-cgi-fcgi]
character_set         = latin1
character-sets-dir    = latin1
default-character-set = latin1

[php-cli]
character_set         = latin1
character-sets-dir    = latin1
default-character-set = latin1

[client]
character_set         = latin1
character-sets-dir    = latin1
default-character-set = latin1
port                  = 3306
socket                = /var/run/mysqld/mysqld.sock

[mysql]
character-sets-dir    = latin1
default-character-set = latin1

[mysqladmin]
character-sets-dir    = latin1
default-character-set = latin1
[mysqlcheck]
character-sets-dir    = latin1
default-character-set = latin1

[mysqldump]
character-sets-dir    = latin1
default-character-set = latin1
max_allowed_packet    = 16M
quick

[mysqlimport]
character-sets-dir    = latin1
default-character-set = latin1

[mysqlshow]
character-sets-dir    = latin1
default-character-set = latin1

[isamchk]
character-sets-dir    = latin1
key_buffer_size       = 128M
sort_buffer_size      = 128M
read_buffer_size      = 4M
write_buffer_size     = 4M

[myisamchk]
character-sets-dir    = latin1
key_buffer_size       = 128M
sort_buffer_size      = 128M
read_buffer_size      = 4M
write_buffer_size     = 4M

[myisampack]
character-sets-dir    = latin1

[mysqld_safe]
err-log               = /var/log/mysql/mysql.err

[mysqld]
character-set-server  = latin1
default-character-set = latin1
user                  = mysql
port                  = 3306
bind-address          = 127.0.0.1
socket                = /var/run/mysqld/mysqld.sock
pid-file              = /var/run/mysqld/mysqld.pid
log-error             = /var/log/mysql/mysqld.err
basedir               = /usr
datadir               = /var/lib/mysql
tmpdir                = /tmp
language              = /usr/share/mysql/english
log-bin               = mysql-bin
server-id             = 1
sync_binlog           = 1
max_binlog_size       = 10M
expire_logs_days      = 2
slave_compressed_protocol = 1
delay-key-write       = ALL
skip-locking
skip-networking
skip-name-resolve
skip-external-locking
#skip-show-database
safe-user-create      = 1
key_buffer_size       = 128M
sort_buffer_size      = 4M
join_buffer_size      = 4M
read_buffer_size      = 4M
read_rnd_buffer_size  = 8M
myisam_sort_buffer_size = 64M
max_allowed_packet    = 16M
thread_cache_size     = 8
table_cache           = 256
query_cache_type      = 1
query_cache_size      = 32M
query_cache_limit     = 1M
thread_concurrency    = 8
local-infile          = 0
long_query_time       = 4
log_slow_queries
log_long_format
myisam_recover
skip-innodb
innodb_buffer_pool_size = 32M
innodb_additional_mem_pool_size = 4M
innodb_data_home_dir  = /var/lib/mysql/
innodb_log_arch_dir   = /var/lib/mysql/
innodb_log_group_home_dir = /var/lib/mysql/
innodb_data_file_path = ibdata1:10M:autoextend:max:128M
innodb_log_file_size  = 5M
innodb_log_buffer_size = 8M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqlhotcopy]
interactive-timeout