Сообщения с адресом получателя заключённым в одинарные кавычки

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
korbnik
сержант
Сообщения: 262
Зарегистрирован: 2008-03-25 14:29:08
Откуда: Москва
Контактная информация:

Сообщения с адресом получателя заключённым в одинарные кавычки

Непрочитанное сообщение korbnik » 2019-04-05 9:35:35

Добрый день!

Сообщение с адресом получателя заключённым в одинарные кавычки
( типа 'user@mail.ru' ) не уходят. Приходит отбивка.

Код: Выделить всё

SMTP error from remote mail server after end of data:
host 10.1.10.32 [10.1.10.32]: 550 header syntax
На хосте 10.1.10.32 установлен exim версии
Exim version 4.91 #2 built 22-Aug-2018 14:16:00
и OS версии Red Hat Enterprise Linux Server release 7.6 (Maipo)

Вывод команды: exim -bP

Код: Выделить всё

accept_8bitmime
acl_not_smtp = 
acl_not_smtp_mime = 
acl_not_smtp_start = 
acl_smtp_auth = 
acl_smtp_connect = 
acl_smtp_data = acl_check_data
acl_smtp_data_prdr = accept
acl_smtp_dkim = 
acl_smtp_etrn = 
acl_smtp_expn = 
acl_smtp_helo = 
acl_smtp_mail = acl_check_mail
acl_smtp_mailauth = 
acl_smtp_mime = acl_check_mime
acl_smtp_notquit = 
acl_smtp_predata = 
acl_smtp_quit = 
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_starttls = 
acl_smtp_vrfy = 
add_environment = PATH=/usr/bin::/bin
admin_groups =
no_allow_domain_literals
no_allow_mx_to_ip
no_allow_utf8_domains
auth_advertise_hosts = 
auto_thaw = 0s
av_scanner = clamd:/var/run/clamd.exim/clamd.sock
bi_command = 
bounce_message_file = 
bounce_message_text = 
bounce_return_body
bounce_return_linesize_limit = 998
bounce_return_message
bounce_return_size_limit = 100K
bounce_sender_authentication = 
callout_domain_negative_expire = 3h
callout_domain_positive_expire = 1w
callout_negative_expire = 2h
callout_positive_expire = 1d
callout_random_local_part = $primary_hostname-$tod_epoch-testing
check_log_inodes = 100
check_log_space = 10M
check_rfc2047_length
check_spool_inodes = 100
check_spool_space = 10M
chunking_advertise_hosts = *
no_commandline_checks_require_admin
daemon_smtp_ports = 25 : 465 : 587
daemon_startup_retries = 9
daemon_startup_sleep = 30s
no_debug_store
delay_warning = 1d
delay_warning_condition = ${if or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}}
no_deliver_drop_privilege
deliver_queue_load_max =
delivery_date_remove
disable_ipv6
dkim_verify_signers = $dkim_signers
dns_again_means_nonexist = 
dns_check_names_pattern = (?i)^(?>(?(1)\.|())[^\W](?>[a-z0-9/_-]*[^\W])?)+(\.?)$
dns_csa_search_limit = 5
dns_csa_use_reverse
dns_dnssec_ok = -1
dns_ipv4_lookup = 
dns_retrans = 0s
dns_retry = 0
dns_trust_aa = 
dns_use_edns0 = -1
no_drop_cr
dsn_advertise_hosts = 
dsn_from = Mail Delivery System <Mailer-Daemon@$qualify_domain>
envelope_to_remove
errors_copy = 
errors_reply_to = 
event_action = 
exim_group = exim
exim_path = /usr/sbin/exim
exim_user = exim
extra_local_interfaces = 
extract_addresses_remove_arguments
finduser_retries = 0
freeze_tell = 
gecos_name = 
gecos_pattern = 
no_gnutls_allow_auto_pkcs11
no_gnutls_compat_mode
header_line_maxsize = 0
header_maxsize = 1048576
headers_charset = UTF-8
helo_accept_junk_hosts = 
helo_allow_chars = 
helo_lookup_domains = @ : @[]
helo_try_verify_hosts = 
helo_verify_hosts = 
hold_domains = 
host_lookup = 
host_lookup_order = bydns:byaddr
host_reject_connection = 
hosts_connection_nolog = 
hosts_treat_as_local = 
ignore_bounce_errors_after = 2d
ignore_fromline_hosts = 
no_ignore_fromline_local
keep_environment = ^LDAP
keep_malformed = 4d
ldap_ca_cert_dir = 
ldap_ca_cert_file = 
ldap_cert_file = 
ldap_cert_key = 
ldap_cipher_suite = 
ldap_default_servers = 
ldap_require_cert = 
no_ldap_start_tls
ldap_version = -1
local_from_check
local_from_prefix = 
local_from_suffix = 
local_interfaces = <; ::0 ; 0.0.0.0
local_scan_path = 
local_scan_timeout = 5m
no_local_sender_retain
localhost_number = 1
log_file_path = : syslog
log_selector = +smtp_protocol_error +smtp_syntax_error +tls_certificate_verified
no_log_timezone
lookup_open_max = 25
max_username_length = 0
no_message_body_newlines
message_body_visible = 500
message_id_header_domain = 
message_id_header_text = 
message_logs
message_size_limit = 50M
no_mua_wrapper
mysql_servers = 
never_users = root
openssl_options = 
percent_hack_domains = 
no_perl_at_start
perl_startup = 
no_perl_taintmode
pgsql_servers = 
pid_file_path = /var/run/exim.pid
pipelining_advertise_hosts = *
prdr_enable
no_preserve_message_logs
primary_hostname = castor.vbrr.ru
no_print_topbitchars
process_log_path = /var/spool/exim/exim-process.info
prod_requires_admin
qualify_domain = castor.vbrr.ru
qualify_recipient = castor.vbrr.ru
queue_domains = 
queue_list_requires_admin
no_queue_only
queue_only_file = 
queue_only_load =
queue_only_load_latch
queue_only_override
no_queue_run_in_order
queue_run_max = 5
queue_smtp_domains = 
receive_timeout = 0s
received_header_text = Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} ${if def:tls_cipher {($tls_cipher)\n\t}}(Exim $version_number)\n\t${if def:sender_address {(envelope-from <$sender_address>)\n\t}}id $message_exim_id${if def:received_for {\n\tfor $received_for}}
received_headers_max = 30
recipient_unqualified_hosts = 
recipients_max = 0
no_recipients_max_reject
remote_max_parallel = 2
remote_sort_domains = 
retry_data_expire = 1w
retry_interval_max = 1d
return_path_remove
rfc1413_hosts = @[]
rfc1413_query_timeout = 0s
sender_unqualified_hosts = 
slow_lookup_log = 0
smtp_accept_keepalive
smtp_accept_max = 20
smtp_accept_max_nonmail = 10
smtp_accept_max_nonmail_hosts = *
smtp_accept_max_per_connection = 1000
smtp_accept_max_per_host = 
smtp_accept_queue = 0
smtp_accept_queue_per_connection = 10
smtp_accept_reserve = 0
smtp_active_hostname = 
smtp_banner = $smtp_active_hostname ESMTP Exim $version_number $tod_full
smtp_check_spool_space
smtp_connect_backlog = 20
smtp_enforce_sync
smtp_etrn_command = 
smtp_etrn_serialize
smtp_load_reserve =
smtp_max_synprot_errors = 3
smtp_max_unknown_commands = 3
smtp_ratelimit_hosts = 
smtp_ratelimit_mail = 
smtp_ratelimit_rcpt = 
smtp_reserve_hosts = 
no_smtp_return_error_details
spamd_address = 127.0.0.1 783
no_split_spool_directory
spool_directory = /var/spool/exim
no_spool_wireformat
sqlite_lock_timeout = 5
no_strict_acl_vars
no_strip_excess_angle_brackets
no_strip_trailing_dot
syslog_duplication
syslog_facility = 
syslog_pid
syslog_processname = exim
syslog_timestamp
system_filter = 
system_filter_directory_transport = 
system_filter_file_transport = 
system_filter_group = 
system_filter_pipe_transport = 
system_filter_reply_transport = 
system_filter_user = 
tcp_nodelay
timeout_frozen_after = 1w
timezone = 
tls_advertise_hosts = *
tls_certificate = /etc/pki/tls/certs/exim.pem
tls_crl = 
tls_dh_max_bits = 2236
tls_dhparam = 
tls_eccurve = auto
tls_ocsp_file = 
tls_on_connect_ports = 465
tls_privatekey = /etc/pki/tls/private/exim.pem
no_tls_remember_esmtp
tls_require_ciphers = 
tls_try_verify_hosts = 
tls_verify_certificates = system
tls_verify_hosts = 
trusted_groups =
trusted_users =
unknown_login = 
unknown_username = 
untrusted_set_sender = 
uucp_from_pattern = ^From\s+(\S+)\s+(?:[a-zA-Z]{3},?\s+)?(?:[a-zA-Z]{3}\s+\d?\d|\d?\d\s+[a-zA-Z]{3}\s+\d\d(?:\d\d)?)\s+\d\d?:\d\d?
uucp_from_sender = $1
warn_message_file = 
write_rejectlog
Вывод команды: grep -v "#" /etc/exim/exim.conf | grep -v "^$"

Код: Выделить всё

primary_hostname = castor.vbrr.ru
localhost_number = 1
disable_ipv6 = true
log_file_path = : syslog
DKIM_DOMAIN                     = ${lc:${domain:$h_from:}}
DKIM_FILE                       = /etc/exim/${lc:${domain:$h_from:}}.key
DKIM_PRIVATE_KEY                = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
domainlist local_domains = @ : localhost : localhost.localdomain
domainlist relay_to_domains =
hostlist   relay_from_hosts = localhost : 10.1.10.2 : 10.1.10.8 : 10.1.2.15
acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
av_scanner = clamd:/var/run/clamd.exim/clamd.sock
tls_advertise_hosts = *
tls_certificate = /etc/pki/tls/certs/exim.pem
tls_privatekey = /etc/pki/tls/private/exim.pem
daemon_smtp_ports = 25 : 465 : 587
tls_on_connect_ports = 465
never_users = root
auth_advertise_hosts =
prdr_enable = true
log_selector = +smtp_protocol_error +smtp_syntax_error \
        +tls_certificate_verified
ignore_bounce_errors_after = 2d
IGNORE_SMTP_LINE_LENGTH_LIMIT='true'
timeout_frozen_after = 7d
keep_environment = ^LDAP
add_environment = PATH=/usr/bin::/bin
begin acl
acl_check_mail:
  deny condition = ${if eq{$sender_helo_name}{} {1}}
       message = Nice boys say HELO first
  warn condition = ${if eq{$sender_host_name}{} {1}}
       set acl_m_greylistreasons = Host $sender_host_address lacks reverse DNS\n$acl_m_greylistreasons
  accept
acl_check_rcpt:
  accept  hosts = :
          control = dkim_disable_verify
  deny    message       = Restricted characters in address
          local_parts   = ^.*[@%!/|] : ^\\. : <>
  accept  local_parts   = postmaster
          domains       = +local_domains
  require verify        = sender
  accept  hosts         = +relay_from_hosts
          control       = submission
          control       = dkim_disable_verify
  accept  authenticated = *
          control       = submission
          control       = dkim_disable_verify
  require message       = nice hosts say HELO first
          condition     = ${if def:sender_helo_name}
  require message = relay not permitted
          domains = +local_domains : +relay_to_domains
  require verify = recipient
  accept
acl_check_data:
  deny    message    = maximum allowed line length is 998 octets, \
                       got $max_received_linelength
          condition  = ${if > {$max_received_linelength}{998}}
  deny    !verify =     header_syntax
          message =     header syntax
          log_message = header syntax ($acl_verify_message)
  warn    condition  = ${if !def:h_Message-ID: {1}}
          set acl_m_greylistreasons = Message lacks Message-Id: header. Consult RFC2822.\n$acl_m_greylistreasons
  accept
acl_check_mime:
  deny message = Blacklisted file extension detected
       condition = ${if match \
                        {${lc:$mime_filename}} \
                        {\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} \
                     {1}{0}}
  accept
begin routers
dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more
system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  file_transport = address_file
  pipe_transport = address_pipe
userforward:
  driver = redirect
  check_local_user
  file = $home/.forward
  allow_filter
  no_verify
  no_expn
  check_ancestor
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
procmail:
  driver = accept
  check_local_user
  require_files = ${local_part}:+${home}/.procmailrc:/usr/bin/procmail
  transport = procmail
  no_verify
localuser:
  driver = accept
  check_local_user
  transport = local_delivery
  cannot_route_message = Unknown user
begin transports
remote_smtp:
  driver = smtp
  interface = 10.1.10.31
  hosts_avoid_tls = *
  message_size_limit = ${if > {$max_received_linelength}{1054} {1}{0}}
  dkim_domain = DKIM_DOMAIN
  dkim_selector = mail3
  dkim_private_key = DKIM_PRIVATE_KEY
remote_msa:
  driver = smtp
  port = 587
  hosts_require_auth = *
procmail:
  driver = pipe
  command = "/usr/bin/procmail -d $local_part"
  return_path_add
  delivery_date_add
  envelope_to_add
  user = $local_part
  initgroups
  return_output
local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  mode = 0660
address_pipe:
  driver = pipe
  return_output
address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add
address_reply:
  driver = autoreply
begin retry
*                      *           F,2h,15m; G,16h,1h,1.5; F,7d,6h
begin rewrite
begin authenticators
Где нужно подправить в конфиге, чтобы эти письма уходили?
-= ФриБииСДи! И не БиСДи! =- Copyright (Korenev Boris)

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

guest
проходил мимо

Сообщения с адресом получателя заключённым в одинарные кавычки

Непрочитанное сообщение guest » 2019-04-05 10:44:02

Где нужно подправить в конфиге, чтобы эти письма уходили?
в голове, начните с:
https://en.wikipedia.org/wiki/Email_address
там все необходимые RFC в которых описан возможный формат
email адреса, локальная часть, доменная часть, варианты нотации,
допустимые символы, что и в каких случаях допустимо заключать
в двойные кавычки и тд и тп.

Аватара пользователя
korbnik
сержант
Сообщения: 262
Зарегистрирован: 2008-03-25 14:29:08
Откуда: Москва
Контактная информация:

Сообщения с адресом получателя заключённым в одинарные кавычки

Непрочитанное сообщение korbnik » 2019-04-05 10:58:35

Да, но там сказано что одинарную кавычку можно ставить и письмо должно уйти:

Код: Выделить всё

The local-part of the email address may use any of these ASCII characters:

    uppercase and lowercase Latin letters A to Z and a to z;
    digits 0 to 9;
    printable characters !#$%&'*+-/=?^_`{|}~;
Вот выше перед звёздочкой стоит одинарная кавычка.

А у меня не уходят.
-= ФриБииСДи! И не БиСДи! =- Copyright (Korenev Boris)

guest
проходил мимо

Сообщения с адресом получателя заключённым в одинарные кавычки

Непрочитанное сообщение guest » 2019-04-05 14:28:27

Вот выше перед звёздочкой стоит одинарная кавычка.

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

Изучите pls, как минимум все что написано в материале по ссылке, а лучше
RFC 822 и остальные:
- как формируется email address
- какие форматы email адреса существуют
- как формируется, локальная и доменная часть
и тд и тп.

Есть MUA умные и тупые, одни выполняют парсинг email address и отдают
сообщение об ошибке, другие либо не полностью проверяют в соответствие
со всеми RFC, старыми и новыми, либо не проверяют - пусть это делает
MTA. А MTA может просто выдать ошибку - неверный хост из-за
неверно указанного email-address - нарушение RFC822, ибо за правильное
формирование email отвечает MUA.

Примеры:

- прокатит с командной строки
# echo "shfjkhsdjkf" | mail -s "ashdfjkhj" 'user.name@domain.net'

ибо либо shell уберет экранирование из email address, либо BSD'шный MUA "mail"

- прокатит из других MUA, но MTA вернет ошибку:
550 5.1.2 ибо адрес будет сформирован <'user.name@domain.net'>

ибо в этом случае, кавычки <> будут откинуты, локальная часть до "@" будет: 'user.name
а доменная часть будет: domain.net'
не сложно понять что домена с одинарной кавычкой в конце не существует.

- не прокатит в правильных WebMail'ах, например roundcube.

Зря разобрал, нужно чтобы самостоятельно учились ЧИТАТЬ и ПОНИМАТЬ что написано в
документации и логах и думать.

Аватара пользователя
korbnik
сержант
Сообщения: 262
Зарегистрирован: 2008-03-25 14:29:08
Откуда: Москва
Контактная информация:

Сообщения с адресом получателя заключённым в одинарные кавычки

Непрочитанное сообщение korbnik » 2019-04-05 17:41:57

Дело в том, что сообщения, которые идут на этот хост (10.1.10.32), идут с другого хоста
с IP-адресом 10.1.10.2 и на этом хосте (10.1.10.2) эти сообщения проходят нормально,
без ошибок. На нём установлен тоже exim версии Exim version 4.77 #2 built 29-Oct-2011 09:18:27
(версия более ранняя) и OS - Red Hat Enterprise Linux Server release 6.7 (Santiago).
-= ФриБииСДи! И не БиСДи! =- Copyright (Korenev Boris)

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1292
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Сообщения с адресом получателя заключённым в одинарные кавычки

Непрочитанное сообщение xM » 2019-04-06 19:13:02

на этом хосте (10.1.10.2) эти сообщения проходят нормально
Значит там не соблюдаются RFC что само по себе ни о чём хорошем не говорит
IT voodoo blog https://kostikov.co