LINUX.ORG.RU
ФорумAdmin

Кодировка входящих сообщений Exim

 , , ,


0

1

На сервере работает Exim+Dovecot. При отправке сообщений с кирилицей они приходят получателю в нормальном виде. Но если приходит сообщение на сервер, то все кроме «темы» приходит в виде " =D4=D5=A6=D7 " Сообщение из автооветчика приходит знаками вопроса. Помогите разобраться с кодировкою.

Ответ на: комментарий от router

Вот в том то и вопрос как его изменить? Вот что в теле письма:


--f46d04083adbcd9b2704c2bc268a
Content-Type: text/plain; charset=KOI8-U
Content-Transfer-Encoding: base64


pKbXxNbB0Mymp6bXwcTQ1qbXwdDUyc8KCi0tIApBbmRyZXcgS2lzZWwKU3lzdGVtIEFkbWluaXN0
cmF0b3IKQkVWT0xWRUQuTkVUClNreXBlOiBrYW1wb3Rpazc3Nwo=
--f46d04083adbcd9b2704c2bc268a
Content-Type: text/html; charset=KOI8-U
Content-Transfer-Encoding: quoted-printable


=A4=A6=D7=C4=D6=C1=D0=CC=A6=A7=A6=D7=C1=C4=D0=D6=A6=D7=C1=D0=D4=C9=CF

Где Content-Transfer-Encoding: base64 там отображается нормально, а где Content-Transfer-Encoding: quoted-printable не хочет. Нужно второй подменить на base64

OdmincheG ()
Ответ на: комментарий от true_admin

А куда копать? (стыд и позор) а то я по кругу бегаю наверное! Все входящие вот так отображаются. Нормально приходят сообщения только с MAIL-RU и там Content-Transfer-Encoding: base64

OdmincheG ()
Ответ на: комментарий от OdmincheG

Если у тебя типовой сервер и ничего с письмами там не делается то значит письма уже такими приходят и проблема не на твоей стороне. Убедиться в этом можно послав письма самому себе через свой сервер.

true_admin ★★★★★ ()
Ответ на: комментарий от OdmincheG

ну а почему после автоответчика всё вопросами то это к тому кто его писал.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

то значит письма уже такими приходят и проблема не на твоей стороне.

ну а как мне тогда принимать кирилицу от гугла, или другой почтовой системы?

OdmincheG ()
Ответ на: комментарий от true_admin

транспорты

local_delivery:
    driver = appendfile
    maildir_format
    directory = /var/mail/$domain/$local_part
    create_directory
    directory_mode = 770
    mode = 0660
    delivery_date_add
    envelope_to_add
    return_path_add
    group = vmail

address_direcroty:
    driver = appendfile
    directory_mode = 770
    maildir_format
    mode = 0660

null_transport:
    driver = appendfile
    file = /dev/null

address_pipe:
    driver = pipe
    return_output

address_file:
    driver = appendfile
    delivery_date_add
    envelope_to_add
    return_path_add

userautoreply:
    driver = autoreply
    to = ${sender_address}
    from = ${local_part}@${domain}
    once_repeat = 4d
    reply_to = ${local_part}@${domain}
    headers = "Content-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: base64"
    subject = "Autoreply from $local_part@$domain"
    text = ${lookup mysql{SELECT message FROM autoreply WHERE recipient='${local_part}@${domain}'}}

address_reply:
    driver = autoreply

роутеры

dnslookup:
    driver = dnslookup
    domains = ! +local_domains
    transport = remote_smtp
    ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
    no_more
  
mysql_aliases:
    driver = redirect
    allow_fail
    allow_defer
    data = ${lookup mysql{SELECT goto FROM alias WHERE address ='${quote_mysql:$local_part@$domain}'}}
  
userautoreply:
    driver = accept
    condition = ${if eq{} {${lookup mysql{SELECT recipient FROM autoreply \
                                          WHERE recipient='${local_part}@${domain}'}}}{no}{yes}}
    senders = " ! ^.*-request@.*:\
              ! ^owner-.*@.*:\
              ! ^postmaster@.*:\
              ! ^listmaster@.*:\
              ! ^mailer-daemon@.*\
              ! ^root@.*\
              ! ^noreply@.*"
    retry_use_local_part
    no_expn
    no_verify
    transport = userautoreply
    unseen
 
mysql_localuser:
    driver = accept
    condition = ${lookup mysql{SELECT username from users WHERE username='${quote_mysql:$local_part@$domain}'}}
    transport = local_delivery

Больше ничего особого нет, что могло влиять на кодировку.

OdmincheG ()
Ответ на: комментарий от OdmincheG

Как минимум с автоответчиком ситуация понятна: у тебя в базе, небось, оно в utf8 лежит. А exim сам (может и умеет, я хз) не будет перекодировать его. Но ты посмотри в сторону accept_8bitmime, возможно, это решит все проблемы.

По поводу остального: покажи письмо целиком, попробую понять как оно уродуется. А ещё лучше два письма: одно через работающий почтовик, второе которое через твой прошло. Сравним их и сразу всё поймём.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

С автоответчиком пробую разобраться, а с письмами вопрос решился. Проблема была в криворукости програмеров, которые не могли настроить нормально парсер для сообщений! Я поставил ROUNDCUBE и все стало ясно. Круглокуб показал все сообщения с разных ящиков в нормальной кодировке.

OdmincheG ()
Ответ на: комментарий от true_admin

не, там отдельно, я его для теста и проверки поставил. Большое человеческое спасибо за реагирование на сообщения. Опыт наше все)))

OdmincheG ()
Ответ на: комментарий от true_admin

да да!

еще такая проблемка, до конца не могу догнать как оно работает с автоответчика на gmail.com приходит нормально сообщение, а вот на другие не хочет :(

вот транспорт:

userautoreply:
    driver = autoreply
    headers = "Content-Transfer-Encoding: base64\nContent-Type: text/plain; charset=utf-8"
    to = ${sender_address}
    from = ${local_part}@${domain}
    once_repeat = 4d
    reply_to = ${local_part}@${domain}
    subject = ${rfc2047:Re: (autoreply from $local_part@$domain) $h_Subject:}
    text = ${lookup mysql{SELECT message FROM autoreply WHERE recipient='${local_part}@${domain}'}}

address_reply:
    driver = autoreply

А вот оригинал письма:

Delivered-To: my_mail@gmail.com
Received: by 10.114.25.68 with SMTP id a4csp159167ldg;
        Tue, 3 Jul 2012 04:29:11 -0700 (PDT)
Received: by 10.180.100.2 with SMTP id eu2mr24525012wib.10.1341314951043;
        Tue, 03 Jul 2012 04:29:11 -0700 (PDT)
Return-Path: <>
Received: from mydomain.ua ([195.1XX.XXX.XXX])
        by mx.google.com with ESMTPS id 7si15322856wet.134.2012.07.03.04.29.10
        (version=TLSv1/SSLv3 cipher=OTHER);
        Tue, 03 Jul 2012 04:29:10 -0700 (PDT)
Received-SPF: pass (google.com: domain of mydomain.ua designates 195.1XX.XXX.XXX as permitted sender) client-ip=195.1XX.XXX.XXX;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of mydomain.ua designates 195.1XX.XXX.XXX as permitted sender) smtp.mail=
Received: from vmail by mydomain.ua with local (Exim 4.xx)
	id 1Sm1IK-0002tP-HI
	for my_mail@gmail.com; Tue, 03 Jul 2012 14:29:24 +0300
Date: Tue, 03 Jul 2012 14:29:24 +0300
Message-Id: <E1Sm1IK-0002tP-HI@mydomain.ua>
From: usertest@mydomain.ua
Reply-To: usertest@mydomain.ua
To: my_mail@gmail.com
Subject: =?UTF-8?Q?Re=3A_=28autoreply_from_usertest=40mydomain=2Eua=29_=D0=B6=D0=BC=D0=B5?= =?UTF-8?Q?=D0=B9=D0=BB_=D1=83=D1=82=D1=848?=
In-Reply-To: <CAP_Vne0v0_BYkfLqA1M1fo5iCv9wZG-4nLiK8Bwrw8YNDbWfqg@mail.gmail.com>
References: <CAP_Vne0v0_BYkfLqA1M1fo5iCv9wZG-4nLiK8Bwrw8YNDbWfqg@mail.gmail.com>
Auto-Submitted: auto-replied
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset=utf-8

òåñò ç utf8

OdmincheG ()
Ответ на: комментарий от OdmincheG

Я так понимаю что проблема в Content-Transfer-Encoding: base64 . По факту у тебя письмо в utf8 без всякого энкодинга.

Короче, как всегда фигня в базе лежит. Положи туда письмо в base64, если исправится то дело в этом. Я так понимаю что сабжект приходит нормально, проблема именно с телом.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

да в базе все в утф-8, но если убрать Content-Transfer-Encoding: base64 то сообщение приходит вот так

���� ��� ������ ��� ��������������!

OdmincheG ()
Ответ на: комментарий от OdmincheG

ну так в базе оно лежит неправильно! Ты же сам скопировал сообщение «как есть» и там дракозяблы. Сделай select в консоле и посмотри что оно выплюнет.

true_admin ★★★★★ ()
Ответ на: комментарий от OdmincheG

я просто подозреваю обычную проблему с коллейшенами. Хотя хз что там в мускле сейчас, давно не админил.

А в my.cnf что написано?

Вообще попробуй set names сделать как сдесь говорят: http://www.gossamer-threads.com/lists/exim/users/86382

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Вроде все получилось и теперь отправляет в нормальной кодировке.

В my.cnf добавил строку init-connect=«SET NAMES utf8»

В транспорте headers = «Content-Transfer-Encoding: quoted-printable\nContent-Type: text/html; charset=UTF-8»

OdmincheG ()
Ответ на: комментарий от OdmincheG

Content-Transfer-Encoding: quoted-printable

а у тебя точно письма в нём заэнкожены? А то я, глядя на то что ты присылал, сомневаюсь в этом.

true_admin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.