Назад | Перейти на главную страницу

Почему это расширение строки Exim для переменной окружения не работает?

Эта проблема

Короче говоря, использование следующей строки в моем транспорте Exim не приводит к расширению (вставке) строки файла TESTVAR переменная окружения:

headers_add = "X-TESTVAR: ${env{TESTVAR}{$value}{The TESTVAR environment variable was not found}}"

Я никогда не получу $value; Я всегда получаю «Переменная окружения TESTVAR не найдена».

Что я делаю не так?


Окружающая среда:

account@example.com [~]# cat /etc/redhat-release
CentOS release 6.10 (Final)

Версия exim:

account@example.com [~]# exim --version
Exim version 4.91 #1 built 11-May-2018 09:49:25
Copyright (c) University of Cambridge, 1995 - 2018
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2018
Berkeley DB: Berkeley DB 4.7.25: (September 12, 2013)
Support for: crypteq iconv() IPv6 PAM Perl OpenSSL Content_Scanning DKIM DNSSEC Event I18N OCSP PRDR SPF Experimental_SRS
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch dbm dbmjz dbmnz dnsdb passwd sqlite
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir autoreply lmtp pipe smtp
Malware: f-protd f-prot6d drweb fsecure sophie clamd avast sock cmdline
Configure owner: 0:0
Size of off_t: 8
2019-03-08 19:04:22 cwd=/home/account 2 args: exim --version
Configuration file is /etc/exim.conf

Соответствующий транспорт из моего exim.conf:

dovecot_virtual_delivery:
  driver = lmtp
  socket = /var/run/dovecot/lmtp
  batch_max = 200
  rcpt_include_affixes
  delivery_date_add
  envelope_to_add
  return_path_add
  headers_add = "X-TESTVAR: ${env{TESTVAR}{$value}{The TESTVAR environment variable was not found}}"

Команды, которые я выполнил для отправки электронного письма:

account@example.com [~]# export TESTVAR=hello
account@example.com [~]# echo $TESTVAR
hello
account@example.com [~]# exim -t
to:me@example.com
Hi there, this email should have a header named "X-TESTVAR" and it should have a value of "hello".
account@example.com [~]# 

Полученное электронное письмо:

Return-Path: <account@host.example.com>
Delivered-To: me@example.com
Received: from host.example.com
    by host.example.com with LMTP id IH+3MCUQg1waLwAAx771+g
    for <me@example.com>; Fri, 08 Mar 2019 19:00:21 -0600
Return-path: <account@host.example.com>
Envelope-to: me@example.com
Delivery-date: Fri, 08 Mar 2019 19:00:21 -0600
Received: from account by host.example.com with local (Exim 4.91)
    (envelope-from <account@host.example.com>)
    id 1h2QLV-0004Mo-Ee
    for me@example.com; Fri, 08 Mar 2019 19:00:21 -0600
to:me@example.com
Message-Id: <E1h2QLV-0004Mo-Ee@host.example.com>
From: account@host.example.com
Date: Fri, 08 Mar 2019 19:00:20 -0600
X-TESTVAR: The TESTVAR environment variable was not found

Hi there, this email should have a header named "X-TESTVAR" and it should have a value of "hello".

Вы ищете keep_environment настройка. Он определяет, какие переменные среды являются доверенными и должны быть разрешены для использования при выполнении eximʻa. (Документация)

Если ваш exim.conf содержит эту строку:

keep_environment = X-SOURCE : X-SOURCE-ARGS : X-SOURCE-DIR

Измените его на это:

keep_environment = X-SOURCE : X-SOURCE-ARGS : X-SOURCE-DIR : TESTVAR