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 / 问题 / 390978
Accepted
Frank
Frank
Asked: 2012-05-22 01:33:11 +0800 CST2012-05-22 01:33:11 +0800 CST 2012-05-22 01:33:11 +0800 CST

Postfix 添加具有随机值的自定义标头

  • 772

我正在尝试向我的后缀服务器处理的所有消息添加自定义标头。我尝试使用互联网上的指南,但没有任何运气。

在我的 master.cf 中,我添加了:

-o smtp_header_checks=regexp:/etc/postfix/test_tag_header

test_tag_header: 前置 X-Mailgun-Tag: testing123

确保我重新启动了 postfix

我对具有完整标头选项的雅虎邮件进行了一些测试。我添加的标题没有显示。

我的目标是添加一个具有随机值的自定义标头,以便我以后可以使用 mailgun.org 的 api 解析邮件。

X-Mailgun-Tag:随机值(类似于 url shortener)


根据 ank 的回答,这是我目前所拥有的: main.cf

smtp_recipient_restrictions = check_recipient_access 代理:mysql:/etc/postfix/mailgun_header.mysql

mailgun_header.mysql

user        = vmail
password    = mypass
hosts       = 127.0.0.1
port        = 3306
dbname      = vmail
query       = select CONCAT(prefix, MD5(RAND())) as 'check_recipient_access' from mailgun_tokens where prefixID = 1;

当我尝试重新启动 postfix 时,出现以下错误:

/usr/sbin/postconf: 警告: /etc/postfix/main.cf: 未使用的参数: smtp_recipient_restrictions=check_recipient_access proxy:mysql:/etc/postfix/mailgun_header.mysql

*

sql 查询通过 MYSQL 工作正常并返回带有随机数的行。

postfix smtp-headers
  • 2 2 个回答
  • 4691 Views

2 个回答

  • Voted
  1. Best Answer
    Frank
    2012-05-22T23:43:55+08:002012-05-22T23:43:55+08:00

    这是对我有用的解决方案。我现在能够使用MailGun.org作为中继成功跟踪通过我们的后缀服务发送的每条消息。

    请注意,这是使用 iRedmail.org 的 debian /ubuntu 安装脚本简单安装 Postfix / Dovecot。您自己的后缀配置可能不同。

    主文件

    ### MAILGUN LOGGING
    smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/mailgun-header.cf, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient$
    

    /etc/postfix/mailgun-header.cf

    #PREPEND CUSTOM HEADER FOR MESSAGES SENT THROUGH MAILGUN.NET RELAY
    #MAKE SURE TO USE YOUR OWN DATABSE USER / PASSWORD
    
    user        = vmail
    password    = PutYourPasswordHere (in iRedMail tips if you used iRedmail to setup)
    hosts       = 127.0.0.1
    port        = 3306
    dbname      = vmail
    query       = Select CONCAT(prefix, '{"custom-msg-id": ','"',MD5(RAND()),'"','}') as 'check_recipient_access' from mailgun_tokens where prefixID = 1;
    

    MySQL要求:

    您几乎需要在 vmail 数据库中创建一个名为 mailgun_tokens 的表。如果您的数据库名称不同,请务必考虑到这一点。该表很简单,只有两列。一个前缀 (varchar 100),一个称为 prefixId int(1)。它只会有一个记录。您可以在多域设置中获得更多乐趣,并为每个域甚至用户创建一条记录。

    这是让您的 mysql 设置继续上面的代码示例的基本代码:

       -- ----------------------------
    -- Table structure for `mailgun_tokens`
    -- ----------------------------
    DROP TABLE IF EXISTS `mailgun_tokens`;
    CREATE TABLE `mailgun_tokens` (
      `prefix` varchar(100) DEFAULT NULL,
      `prefixID` int(1) unsigned zerofill NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`prefixID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of mailgun_tokens
    -- ----------------------------
    INSERT INTO `mailgun_tokens` VALUES ('PREPEND X-Mailgun-Variables: ', '1');
    

    Last Step: Restart Posftfix(服务postfix重启)

    一旦一切都启动并运行,postfix 现在将添加一个 带有适当 JSON 格式字符串的自定义标头X-Mailgun-Variables 。如果您已将 mailgun 配置为发布到您的应用程序以获取消息阅读通知和链接单击通知,那么 Mailgun 也会将custom-msg-id发布到您的应用程序,以便您可以查找电子邮件。

    将此与将所有消息记录到您的数据库相结合,您可以轻松创建一个应用程序、crm、webmail,一旦消息离开您的邮箱,它就会跟踪消息。阅读电子邮件通知。

    • 1
  2. ank
    2012-05-22T01:54:20+08:002012-05-22T01:54:20+08:00

    与其乱搞 master.cf(我很少这样做),不如在 main.cf 中尝试以下操作

    smtp_recipient_restrictions = (...), check_recipient_access <type>:<table>, (...), 允许

    表中有以下内容

    前置 X-Mailgun-标签:testing123

    还可以查看此示例以获取更多提示。

    • -2

相关问题

  • Postfix 在特定端口上接受邮件

  • 让 Postfix 以两种方式处理垃圾邮件

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 后缀电子邮件地址

  • 什么是最好的开源电子邮件解决方案包

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