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 / 问题 / 426060
Accepted
Toqeer
Toqeer
Asked: 2012-09-11 09:40:08 +0800 CST2012-09-11 09:40:08 +0800 CST 2012-09-11 09:40:08 +0800 CST

具有多个 IP 的出站电子邮件负载平衡

  • 772

我想通过多个 IP 负载平衡出站电子邮件,是否有任何内置工具或一些简单的方法可以使用 postfix、sendmail 或 exim 来实现?例如,如果我为电子邮件服务器分配了三个 IP,并且电子邮件通过所有 IP 逐一发送。

email
  • 3 3 个回答
  • 14707 Views

3 个回答

  • Voted
  1. Luca Gibelli
    2015-11-20T10:26:48+08:002015-11-20T10:26:48+08:00

    使用 Postfix 2.7 或更高版本,这很容易。

    首先在 master.cf 中为每个 IP 创建一个条目,如下所示:

    out1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-out1
          -o smtp_helo_name=out1.yourdomain.tld
          -o smtp_bind_address=a.b.c.1
    out2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-out2
          -o smtp_helo_name=out2.yourdomain.tld
          -o smtp_bind_address=a.b.c.2
    [...]
    outN  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-outN
          -o smtp_helo_name=outN.yourdomain.tld
          -o smtp_bind_address=a.b.c.N
    

    然后在 main.cf 中创建一个依赖于发送者的传输映射,如下所示:

    sender_dependent_default_transport_maps = mysql:/etc/postfix/config/transport_roundrobin.cf
    

    注释掉 main.cf 中的所有其他 transport_map,如下所示:

    #transport_maps = ...
    

    现在这里是诀窍,这个传输表将使用 RAND() 来随机化 master.cf 中列出的所有 out[1..n] 传输的使用。

    在 /etc/postfix/config/transport_roundrobin.cf 中写入:

    user = dbuser
    password = dbpass
    dbname = dbname
    hosts = dbhost
    query = SELECT transport FROM transport_roundrobin ORDER BY RAND() LIMIT 1
    

    最后,在“dbhost”上运行的数据库“dbname”上创建一个名为“transport_roundrobin”的表,并为每个传输插入一行:

    CREATE TABLE transport_roundrobin (transport varchar(40) not null)
    INSERT INTO transport_roundrobin (transport) VALUES ('out1');
    INSERT INTO transport_roundrobin (transport) VALUES ('out2');
    [...]
    INSERT INTO transport_roundrobin (transport) VALUES ('outN');
    

    Postfix 会从 transport_roundrobin mysql 表中随机选择一行,然后使用获得的值在 master.cf 中选择相应的传输。根据 -o smtp_bind_address,每个传输将使用不同的 ip 地址

    • 9
  2. Best Answer
    user128296
    2012-09-11T09:55:50+08:002012-09-11T09:55:50+08:00

    如果您想从单个邮件服务器发送来自不同 Ip 的邮件,那么您应该考虑在单个主机上使用 postfix 多个实例。您可以为每个实例分配不同的 IP 地址,您的空实例将为每个实例提交邮件。有关更多详细信息,您可以参考这些链接 This one for how to assign Ip and all http://souptonuts.sourceforge.net/postfix_sbr.html 以及关于我们如何创建以及实例如何工作的所有基本信息http://www.postfix .org/MULTI_INSTANCE_README.html

    • 3
  3. synkro
    2017-01-27T13:50:14+08:002017-01-27T13:50:14+08:00

    如果使用 postfix 3,请检查此解决方案,它使用randmap,因此您不需要 mysql 的RAND()功能。 https://shami.blog/2016/04/randomize-source-ip-addresses-with-postfix/

    您可以执行master.cf建议的配置,并添加以下内容main.cf(假设您在 中有 3 个条目master.cf):

    sender_dependent_default_transport_maps = randmap:{out1,out2,out3}
    smtp_connection_cache_on_demand=no
    
    • 3

相关问题

  • 如何绕过 ISP 的限制性电子邮件政策?

  • SharePoint 传入电子邮件出现“未知别名”错误

  • 电子邮件帐户的角色名称与人名

  • 如何在笔记本电脑上使用 Tobit David?[关闭]

  • 随行人员通过 VPN 连接到 Exchange 2007

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