You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需OpenDKIM等工具,如何在Postfix配置中添加自定义私钥以实现DKIM?

无需OpenDKIM等工具,如何在Postfix配置中添加自定义私钥以实现DKIM?

Hey there,首先得明确一个核心事实:Postfix本身没有原生的DKIM签名功能,所以你没法只靠修改Postfix的配置参数直接指定私钥路径来完成DKIM签名。不过,如果你不想用OpenDKIM这类专门的DKIM工具,倒是可以借助Postfix的管道传输功能,配合系统自带的openssl写个简单脚本实现——这算是不用额外安装工具的方案,具体步骤如下:

  • 先确保你的DKIM私钥权限正确,让Postfix能读取。假设私钥文件是/etc/postfix/dkim/dkim-private.key,执行以下命令:

    chmod 600 /etc/postfix/dkim/dkim-private.key
    chown postfix:postfix /etc/postfix/dkim/dkim-private.key
    
  • 编写一个bash脚本用于签名,比如保存为/etc/postfix/dkim-sign.sh,记得替换成你的域名和DKIM selector(比如selector用mail):

    #!/bin/bash
    # 替换成你的域名
    DOMAIN="your-domain.com"
    # 替换成你的DKIM selector
    SELECTOR="mail"
    # 私钥文件路径
    PRIVKEY="/etc/postfix/dkim/dkim-private.key"
    
    # 生成邮件正文的SHA256哈希(用于DKIM的bh字段)
    BODY_HASH=$(sed '/^$/q' | tr -d '\r' | openssl dgst -sha256 | awk '{print $2}' | xxd -r -p | base64 -w0)
    
    # 生成DKIM签名
    SIG=$(openssl dgst -sha256 -sign "$PRIVKEY" <(sed '/^$/q' | tr -d '\r') | openssl enc -base64 -A)
    
    # 构造DKIM签名头
    echo "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=$DOMAIN; s=$SELECTOR; t=$(date +%s); bh=$BODY_HASH; h=From:To:Subject; b=$SIG;"
    # 输出原邮件内容
    cat -
    

    给脚本加上执行权限:

    chmod +x /etc/postfix/dkim-sign.sh
    chown postfix:postfix /etc/postfix/dkim-sign.sh
    
  • 修改Postfix的master.cf,添加一个新的管道传输服务:

    dkim-sign unix  -       n       n       -       -       pipe
      flags=R user=postfix argv=/etc/postfix/dkim-sign.sh
    
  • 配置main.cf,让Postfix发送邮件时使用这个签名服务:
    如果要给所有发送的邮件签名,设置:

    default_transport = dkim-sign
    

    如果只想给特定域名签名,可以用传输映射:

    transport_maps = hash:/etc/postfix/transport
    

    然后在/etc/postfix/transport文件中添加:

    your-domain.com dkim-sign:
    

    别忘了生成映射数据库:

    postmap /etc/postfix/transport
    
  • 最后重启Postfix使配置生效:

    systemctl restart postfix
    

注意事项

这个脚本方案比较基础,只适合简单场景(比如单域名、固定selector),没法处理复杂邮件的边界情况(比如多部分MIME邮件、特殊编码的邮件头)。如果是生产环境,还是更推荐用OpenDKIM这类成熟工具——毕竟稳定性和维护性都要强得多。

备注:内容来源于stack exchange,提问作者Abu Shahrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:30:33