Roundcube는 제목 없이 이메일을 보냅니다.

Roundcube는 제목 없이 이메일을 보냅니다.

postfix최근에 및 으로 구성된 메일 서버를 설정했습니다 dovecot. 어제 나는 믹스에 nginx추가 했습니다. roundcubeSPF, DKIM, DMARC, rDNS 레코드가 모두 완료되었습니다. Gmail은 내 메일을 유효한 것으로 간주하여 받은편지함으로 전달합니다. 모든 것이 작동하고 있습니다. 조금 짜증나는 점 하나만 빼고요.

Android에 내장된 MUA나 다른 MUA를 사용해도 모든 것이 여전히 괜찮습니다. 문제는 roundcube를 사용하여 메일을 보내려고 할 때 시작됩니다. 메일은 여전히 ​​확인되어 올바르게 배달되지만 제목은 없습니다. 어떻게든 roundcube는 제목 필드를 잃어버리고 제목 없이 이메일을 보내고 있습니다.

저는 7시간 동안 계속해서 답을 찾고 있었는데, 이 문제를 겪고 있는 사람은 세상에서 저뿐인 것 같습니다. 이로 인해 내 서버나 구성 등에 문제가 있다고 생각하게 되지만 모든 구성을 4번 확인했지만 여전히 아무것도 모릅니다.

어떤 도움이라도 매우 유용할 것입니다. 시간을 내주셔서 미리 감사드립니다.

내 메일 서버는 CentOS 7 Minimal을 실행하는 768MB RAM의 OpenVZ 상자에 있습니다. Postfix 버전: 2.10.1 Dovecot 버전: 2.2.10 Roundcube 버전: 1.1.0

postconf -n결과:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
disable_vrfy_command = yes
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = localhost
myhostname = mail.example.com
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = no
smtpd_helo_required = yes
smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname
smtpd_milters = unix:/var/run/opendkim/opendkim.sock
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp

내 Roundcube 구성 발췌 config/config.inc.php:

$config['debug_level'] = 5;
$config['db_dsnw'] = 'mysql://user:pass@localhost/database';
$config['default_host'] = 'tls://localhost';
$config['default_port'] = 993;
$config['smtp_server'] = 'tls://localhost';
$config['smtp_port'] = 587;
$config['ip_check'] = true;
$config['identities_level'] = 3;
$config['des_key'] = 'some key';
$config['mime_types'] = '/usr/share/nginx/html/roundcube/mime.types';
$config['preview_pane'] = true;

답변1

나는 내 질문에 대한 해결책을 찾았습니다.

아래는 program/steps/mail/sendmail.inc의 507-513 라인입니다.

// encoding subject header with mb_encode provides better results with asian characters
if (function_exists('mb_encode_mimeheader')) {
    mb_internal_encoding($message_charset);
    $headers['Subject'] = mb_encode_mimeheader($headers['Subject'],
        $message_charset, 'Q', "\r\n", 8);
    mb_internal_encoding(RCUBE_CHARSET);
}

변수를 언급하는 두 곳 중 하나입니다 $headers['Subject']. 다른 하나는 변수를 설정하는 라인 196입니다.

저나 제 고객 모두 아시아 문자와 관련이 없기 때문에 이 코드 블록을 주석 처리하고 무슨 일이 일어나는지 살펴보기로 결정했습니다. 짜잔! 피험자가 작업을 시작했습니다. roundcube에 이상한 버그가 있는 것 같습니다. 이것이 언젠가 누군가에게 도움이 되기를 바랍니다.

관련 정보