Roundcube envía correos electrónicos sin asunto

Roundcube envía correos electrónicos sin asunto

Recientemente configuré un servidor de correo que consta de postfixy dovecot. Ayer agregué nginxy roundcubea la mezcla. Los registros SPF, DKIM, DMARC y rDNS están todos terminados. Gmail trata mi correo como válido y lo entrega en mi bandeja de entrada. Todo está funcionando. Excepto una pequeña cosa molesta.

Cuando uso el MUA integrado de Android u otros MUA, todo sigue bien. El problema comienza cuando quiero enviar correo usando roundcube. El correo sigue verificado y entregado correctamente, pero sin asunto. De alguna manera, roundcube está perdiendo el campo de asunto y envía mis correos electrónicos sin el asunto.

He estado buscando una respuesta durante 7 horas seguidas, sin embargo, parece que soy la única persona en el mundo que está experimentando este problema. Esto me hace pensar que algo anda mal con mi servidor o mis configuraciones o algo así, pero verifiqué cuatro veces todas mis configuraciones y todavía no tengo ni idea.

Cualquier ayuda será de gran utilidad. Gracias de antemano por tu tiempo.

Mi servidor de correo está en una caja OpenVZ con 768 MB de RAM y ejecuta CentOS 7 Minimal. Versión de Postfix: 2.10.1 Versión de Dovecot: 2.2.10 Versión de Roundcube: 1.1.0

Mi postconf -nsalida:

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

Mi extracto de configuración de Roundcube en 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;

Respuesta1

He encontrado la solución a mi propia pregunta.

A continuación se muestran las líneas 507-513 de program/steps/mail/sendmail.inc.

// 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);
}

Este es uno de los dos lugares que menciona $headers['Subject']variable. La otra es la línea 196 que establece la variable.

Como ni yo ni mis clientes tenemos nada que ver con caracteres asiáticos, decidí comentar este código bloqueado y ver qué pasa, ¡y listo! Los sujetos comenzaron a trabajar. Parece que roundcube tiene un error extraño. Espero que esto ayude a alguien algún día.

información relacionada