AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[exim](server)

Martin Hope
Tim Styles
Asked: 2024-11-19 23:23:25 +0800 CST

Exim 路由器根据主题重定向电子邮件

  • 5

我想将主题为“您的包裹已到达”的电子邮件重定向到本地电子邮件别名[email protected]。为此,我创建了以下路由器:

redirect_packages:
  debug_print = "R: redirect_packages with subject $header_subject"
  driver = redirect
  domains = +local_domains
  condition = ${if eq {$header_subject} {Your Parcel has Arrived.} {true} }
  data = packages@${domain}

我无法使条件结果为真。调试输出为:

--------> redirect_packages router <--------
local_part=me domain=example.com
checking domains
cached yes match for +local_domains
cached lookup data = example.com
example.com in "+local_domains"? yes (matched "+local_domains" - cached)
 -­considering: R: redirect_packages with subject $header_subject
 ----expanding: R: redirect_packages with subject $header_subject
 -------result: R: redirect_packages with subject Your Parcel has Arrived.
            ----(tainted)
R: redirect_packages with subject Your Parcel has Arrived.
checking "condition" "${if eq {$header_subject} {Your Parcel has Arrived.} {true} }"...
 -­considering: ${if eq {$header_subject} {Your Parcel has Arrived.} {true} }
  -­considering: $header_subject} {Your Parcel has Arrived.} {true} }
  ---expanding: $header_subject} {Your Parcel has Arrived.
  -------result:  {Your Parcel has Arrived.
  -­considering: true} }
  ---expanding: true
  -------result: true
 ---condition: eq {$header_subject} {Your Parcel has Arrived.} {true}
 -----result: false
 ---expanding: ${if eq {$header_subject} {Your Parcel has Arrived.} {true} }
 -------result:
redirect_packages router skipped: condition failure

我看不出哪里出了问题。调试消息中正确扩展了 $header_subject。但是,在条件下它无法与看起来相同的文本匹配。

条件扩展的方式看起来也不对,就好像它缺少 $header_subject 后的右括号。

有人能解释一下发生了什么情况以及为什么结果不正确吗?

exim
  • 1 个回答
  • 75 Views
Martin Hope
artfulrobot
Asked: 2023-08-24 22:01:07 +0800 CST

Exim 对 DKIM 验证出现误报

  • 6

我使用 exim4 的邮件服务器有一个 ACL 来检查 DKIM 签名。它接受所有内容,但会记录失败并写入包含结果的标头。

我正在从另一台服务器发送邮件,我相信该服务器正确添加了 DKIM 签名。(例如,我已将邮件发送到 gmail 和 Outlook 地址,检查了标头,这两个系统都给了 DKIM 通过。)但是我的邮件服务器说bodyhash_mismatch。

我的邮件服务器并不总是说 DKIM 失败。

这是一封电子邮件。我已经更改了域:

  • example.org这是主要组织的域;它用在From:标头中,是签名者域。公钥在 DNS 中发布。
  • sender.example.org这是发送电子邮件、创建 DKIM 标头的服务器。这是返回路径标头。
  • receive.example.org这是我的邮件服务器的域,正在其中验证 DKIM。这是X-dkim-check添加标题的地方,下面的文本domain=来自$dkim_cur_signer
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from mail.receiver.example.org
    by mail.receiver.example.org with LMTP
    id t8rHGepc52SOVA8ADCPZSA
    (envelope-from <[email protected]>)
    for <[email protected]>; Thu, 24 Aug 2023 14:36:42 +0100
Received: from sender-rdns.example.org ([1.2.3.4] helo=sender.example.org)
    by mail.receiver.example.org with esmtps  (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    (Exim 4.94.2)
    (envelope-from <[email protected]>)
    id 1qZAVv-004DMU-00
    for [email protected]; Thu, 24 Aug 2023 14:36:42 +0100
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
    d=example.org; s=220151210; h=Sender:Message-Id:Subject:From:To:Date:
    Reply-To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
    Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
    :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
    List-Subscribe:List-Post:List-Owner:List-Archive;
    bh=ecGWgWCJeWxJFeM0urOVWP+KOlqqvsQYKOpYUP8nk7I=; b=GTY2HZVje81tRJ0/xKFNUk5d7/
    9wE7CGtwmz2APM5VTDKY6q+qIbwhCRNzc6IWZ4j0Y9FOtnuVBeNR1I5xbOuqPaf62MYQZJFjLQ3/J
    PNpOpS3i1Yd3NCZUs1iB/Q8N+ii73FrvD5k1AA8F5yzJhVeaposgbkvU5vv1s/KgqTIA=;
Received: from localhost ([127.0.0.1] helo=sender.example.org)
    by sender.example.org with esmtp (Exim 4.96)
    (envelope-from <[email protected]>)
    id 1qZAVt-001EhO-2k
    for [email protected];
    Thu, 24 Aug 2023 14:36:41 +0100
Date: Thu, 24 Aug 2023 14:36:41 +0100
To: [email protected]
From: [email protected]
Subject: test Thu, 24 Aug 2023 14:36:41 +0100
Message-Id: <[email protected]>
X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
Sender: [email protected]
X-dkim-check: DKIM test failed: (domain=example.org), signature is bad.

This is a test mailing

如何调试为什么 exim onreceiver.example.org认为签名不好?

(我注意到 DKIM 签名包含许多不存在的标头。这可能是一个原因吗?)

编辑:添加详细信息:

  • 签名 exim:4.96-15+deb12u1。
  • 接收exim:4.94.2-7~bpo10+1
exim
  • 1 个回答
  • 46 Views
Martin Hope
joe.mse
Asked: 2023-08-17 00:02:45 +0800 CST

EXIM4:使用 DKIM 签署电子邮件

  • 5

我真的是用我的头撞墙。我已经尝试了好几天让 dkim 签名来处理来自运行在 Debian 12、exim4 版本 4.96 上的服务器的出站电子邮件,但无济于事。我什至没有收到 DKIM 错误消息,什么也没有。

这是我到目前为止所做的:

  1. 创建了一个新的公私 rsa 对/etc/exim4/dkim(我们称其为domain-private.pem和domain-public.pem)
  2. 更新/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp为包括以下内容:
remote_smtp:
  driver = smtp
  dkim_canon = relaxed
  dkim_domain = <domain name>
  dkim_private_key = /etc/exim4/dkim/domain-private.pem
  dkim_selector = apollo
  1. 向我的 DNS 提供商添加了一条 TXT 记录(我暂时不会在此处添加更多详细信息,因为我认为这不是相关部分)。
  2. 运行update-exim4.conf并重新启动该服务。

然而,当我尝试使用 exim 发送电子邮件时,没有 exim 签名,没有错误,什么也没有。我缺少什么?

提前致谢。

exim
  • 1 个回答
  • 70 Views
Martin Hope
Bombe
Asked: 2023-06-15 13:37:05 +0800 CST

Amazon SES 无法将邮件投递到我的 Exim

  • 5

我经常在我的 exim 日志文件中找到这样的行:

17:42:56 [6063] 1q9ScJ-0001Zn-SJ DKIM: d=slack.com s=s4xolb5s7tnx6yxtrm4adems7glgsuyf c=relaxed/simple a=rsa-sha256 t=1686757138 [invalid - public key record (currently?) unavailable]
17:42:56 [6063] 1q9ScJ-0001Zn-SJ DKIM: d=amazonses.com s=224i4yxa5dv7c2xz3womw6peuasteono c=relaxed/simple a=rsa-sha256 t=1686757138 [invalid - public key record (currently?) unavailable]
17:42:56 [6063] 1q9ScJ-0001Zn-SJ DKIM test passed (address=01000188ba8f5fb3-3091cee3-ea59-43bc-a0ef-97ab87419b59-000000@mail.slack.com domain=slack.com), but signature is invalid.
17:42:56 [6063] 1q9ScJ-0001Zn-SJ DKIM test passed (address=01000188ba8f5fb3-3091cee3-ea59-43bc-a0ef-97ab87419b59-000000@mail.slack.com domain=amazonses.com), but signature is invalid.
17:42:56 [6063] 1q9ScJ-0001Zn-SJ TLS error on connection from a35-21.smtp-out.amazonses.com [54.240.35.21]:42401 I=[<my-ip>]:25 (recv): The TLS connection was non-properly terminated.
17:42:56 [6063] 1q9ScJ-0001Zn-SJ SMTP connection lost after final dot H=a35-21.smtp-out.amazonses.com [54.240.35.21]:42401 I=[<my-ip>]:25 P=esmtps

根据https://serverfault.com/a/932770/142936最后一行应该表示电子邮件已经发送;但是,这些邮件都没有出现在我的收件箱中。不,它们也不是垃圾邮件。它基本上是来自 Slack、亚马逊本身以及一些不再运行自己的电子邮件服务器的其他服务的每封邮件。其他大型电子邮件服务,如 Gmail,可以毫不费力地将邮件发送到我的服务器。

我怀疑倒数第二行在某种程度上起到了作用,我只是不知道如何进一步调试它……我能做些什么吗?亚马逊必须修复他们的 SES 吗?我再也不会收到来自 Amazon SES 的任何邮件了吗??

exim
  • 1 个回答
  • 21 Views
Martin Hope
wu-lee
Asked: 2022-08-20 06:55:02 +0800 CST

exim4 的 `${sqlite_quote ... }` 扩展是否会破坏扩展值?

  • 0

我正在将具有一些自定义过滤器的 exim4 安装升级到 Debian 11。(具体来说,过滤器是这个。)

由于它使用了 Exim 4.94,我现在遇到了新的“污染变量”功能,它破坏了我的过滤器。在调试模式下检查 Exim 时exim4 -bdf -d+filter出现错误是指受污染的文件名(为便于阅读而添加了一些换行符):

102536 LOG: MAIN PANIC
102536   Tainted filename for search '/var/spool/exim4/db/disposable-aliases.db'
102536  Filter error: failed to expand 
  "${lookup sqlite{/var/spool/exim4/db/disposable-aliases.db \
    select default_remaining from stem_configs \
    where stem = '${quote_sqlite:$local_part}'} {$value}{0}}" 
  in add command: NULL
102536 Filter: end of processing

在这种情况下,对文件名的引用似乎是虚假的,因为首先文件名是硬连线的(所以不能被污染?)其次,如果我用'${quote_sqlite:$local_part}'文字值替换查询的一部分,错误就会停止(至少来自这个特定的查找)。

因此,我怀疑问题实际上是$local_part查询中存在的问题,而不是文件名。

我发现$local_part在某些情况下有一个未受污染的版本可用,$local_part_data但是在我的情况下,它没有被设置,因此没有用。

更多搜索可在此处的 Exim4 文档中找到此断言:

如果查询中使用了受污染的数据,则应使用适合查找的 ${quote_:} 扩展运算符将其引用 [原文如此]。

这似乎暗示着${sqlite_quote: .. }扩展应该对$local_data. 这似乎是明智的,但这实际上是否正确,因为如果我用文字替换扩展,污染问题就会停止?

如果${sqlite_quote: .. }真的是去污点它的结果,那么是什么导致这个查找被拒绝?

如果不是,那我还有什么办法?上面的 sqlite 查找实际上旨在根据存储在数据库中的有效值列表验证本地部分,并且应该能够去除该值!

我应该补充一点:我不能使用文件查找,因为这个有效的列表需要动态配置,在 exim4 配置文件之外。

exim
  • 0 个回答
  • 73 Views
Martin Hope
be MrZulf
Asked: 2022-04-12 22:46:54 +0800 CST

如何在 exim 中转发所有无效的传入邮件

  • 0

我必须将所有无效传入新地址我有这样的路线。

虚拟别名:
    驱动程序=重定向
    允许延迟
    允许失败
    域 = lsearch;/etc/userdomains
    用户=“${查找\
        {$域名} \
        lsearch{/etc/userdomains} \
        {$值} \
    }"
    组=“$ {查找\
        {$域名} \
        lsearch{/etc/userdomains} \
        {$值} \
    }"
    地址数据=\
        “路由器=$路由器名称\
        重定向=${报价:${查找\
            {$local_part} \
            lsearch{${extract{5}{::}{${lookup passwd{${lookup{$domain}lsearch{/etc/userdomains}{$value}}}{$value}}}}/etc/${ perl{untaint}{$domain}}/别名} \
    }}”
    数据 = ${extract{redirect}{$address_data}}
    文件传输 = 地址文件
    router_home_directory = ${提取\
        {5} \
        {::} \
        {${查找密码\
            {${查找\
                {$domain_data} \
                lsearch{/etc/userdomains} \
                {$值} \
            }} \
            {$值} \
        }} \
    }
    local_part_suffix = +*
    local_part_suffix_optional
    retry_use_local_part
    看不见


用户转发:
    驱动程序=重定向
    允许过滤器
    允许失败
    forbid_filter_run
    forbid_filter_perl
    forbid_filter_lookup
    forbid_filter_readfile
    forbid_filter_readsocket
    检查祖先
    check_local_user
    域 = $primary_hostname
    no_expn
    require_files = "+$home/.forward"
    条件 = "${extract{size}{${stat:$home/.forward}}}"
    文件 = $home/.forward
    文件传输 = 地址文件
    回复运输 = 地址回复
    directory_transport = 地址目录
    用户 = $local_part_data
    组 = $local_part_data
    no_verify

文件作为用户:[email protected],用户 *::::fail:Any Message

在这里我的正常前锋工作,但不是这个 * 一个

exim mail-forwarding
  • 2 个回答
  • 41 Views
Martin Hope
Huynh Vinh Phat
Asked: 2021-11-08 20:28:21 +0800 CST

Exim 与奇怪的 ips 建立了许多连接

  • 0

我安装了 VestaCP 并将他们的邮件服务器用于我的域邮件。但是当我在我的服务器上运行 netstat 时,它显示了一些奇怪的连接。到目前为止,我的邮件服务器没有问题,我只是担心这些连接。

我的服务器是否遇到任何安全问题?

# netstat -antp

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      5033/exim
tcp        0      0 0.0.0.0:2525            0.0.0.0:*               LISTEN      5033/exim
tcp        0     35 my.server.ip.address:25        87.246.7.228:63258      ESTABLISHED 13152/exim
tcp        0     35 my.server.ip.address:25        212.70.149.88:38064     ESTABLISHED 13518/exim
tcp        0      0 my.server.ip.address:25        212.70.149.88:20194     ESTABLISHED 13519/exim
email-server exim netstat vestacp
  • 1 个回答
  • 70 Views
Martin Hope
VagrantPaladin
Asked: 2021-10-05 22:09:59 +0800 CST

如何防止 exim 转发的电子邮件被视为垃圾邮件

  • 1

我最近开始关注一个邮件系统,用户可以在其中使用 Web 邮件前端来托管他们的电子邮件。提供的功能之一是设置转发的功能。

我面临的问题以及我之前的人都面临过的问题是,当用户将邮件转发到另一个邮箱(例如他们自己的 gmail 地址)时,Google 会将电子邮件视为来自未经授权的 IP 地址。

我知道这是因为发件人域设置了带有“-all”标志的 SPF 记录,而我的 IP 地址显然不属于那里。

据我了解,Gmail 和其他提供商无法区分实际转发的邮件和欺骗性垃圾邮件之间的区别,然后将我的服务器地址列入灰名单。

我不禁认为其他人之前一定已经解决了这个问题。

转发是使用 exim 完成的,因此我正在寻找的是指南,甚至只是用于搜索的正确关键字,以找到此问题的答案。

exim mail-forwarding spam-marked
  • 1 个回答
  • 191 Views
Martin Hope
TheJebusLizard
Asked: 2021-06-26 00:29:21 +0800 CST

你能帮我理解这个 EXIM 日志吗?

  • 2

我经常看到这种类型的日志,

2021-06-25 08:00:06 1rpTwT-03DnAE-9G Sender identification U=redacted D=redacted.tld [email protected]

我正在使用诸如https://www.exim.org/exim-html-current/doc/html/spec_html/ch-log_files.html之类的资源来更好地学习 exim 日志,这些信息非常密集。

我怀疑上面的日志告诉我以下 SMTP 错误:

smtp_syntax_error:为遇到的每个 SMTP 语法错误写入日志行。无法识别的命令被视为语法错误。对于外部连接,主机标识是给定的;对于使用 -bs 的内部连接,会给出发送者标识(通常是调用用户)。

谢谢大家。

linux exim
  • 1 个回答
  • 113 Views
Martin Hope
christopher westburry
Asked: 2021-04-16 04:47:57 +0800 CST

Exim:接受后缀别名作为 ACL 中的 FROM 地址

  • 1

我正在使用 exim 发送邮件。对于经过 SMTP 身份验证的用户,我已经添加了几个 ACL,并希望添加另一个允许后缀别名的 ACL。后缀别名是电子邮件地址,例如“[email protected]”。

环境如下所示:

  • 用户名(完整的电子邮件地址)存储在$authenticated_id
  • 设置的 FROM 地址存储在$sender_address
  • “[email protected]”中的“用户”可以在${local_part:$authenticated_id}
  • 认证用户的域名在${domain:$authenticated_id}

现在我想实现如下所示的 ACL 规则:

# accept if FROM address is a suffix alias of authenticated address
accept
  condition = ${if match {$sender_address} {${local_part:$authenticated_id}+{*}@${domain:$authenticated_id}} }
  logwrite = AUTH OK - FROM address $sender_address is a suffix alias of authenticated user

不幸的是,ACL 规则似乎不正确。我收到以下错误消息:

failed to expand ACL string "${if match {$sender_address} {${local_part:$authenticated_id}+{*}@${domain:$authenticated_id}} }": curly-bracket problem in conditional yes/no parsing: 'yes' part did not start with '{'

问:上述条件有什么问题,实现这一点的正确条件应该是什么样的?

access-control-list exim
  • 1 个回答
  • 153 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve