Sendmail转发?

我在Ubuntu 16.04.1下安装了Sendmail 。 我的需求很简单:

  • 将发送到*@domain.com的所有电子邮件转发到一个特定的Gmail地址

  • 如果电子邮件发送到[email protected],将这些邮件转发到一个特定的Gmail地址(不同于以上的Gmail地址)。 该用户在服务器上没有帐户。

我知道这很简单,但我不知道如何完成它。

我有一个virtusertable ,看起来像这样:

 [email protected] [email protected] @domain.com [email protected] 

任何人都可以帮助我得到这个configuration好吗? 谢谢!

安装先决条件

 apt-get install sendmail mailutils sendmail-bin 

创build一个Gmail身份validation文件

创buildauth文件的实际目录

 mkdir -m 700 /etc/mail/authinfo/ cd /etc/mail/authinfo/ 

创buildauth文件本身

 vi /etc/mail/authinfo/gmail-auth 

把这个放在gmail-auth的内容中(确保input正确的用户/ gmail /密码(同时保留前缀U:user I:email P:password))

 AuthInfo: "U:root" "I:YOUR GMAIL EMAIL ADDRESS" "P:YOUR PASSWORD" 

接下来,您要为validation文件创build哈希映射

 makemap hash gmail-auth < gmail-auth 

configuration您的Sendmail

第一个“MAILER”定义行的上方添加以下代码块

 define(`SMART_HOST',`[smtp.gmail.com]')dnl define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl define(`confAUTH_OPTIONS', `A p')dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl FEATURE(`authinfo',`hash -o /etc/mail/authinfo/gmail-auth.db')dnl 

接下来你必须编译sendmailconfiguration。

 make -C /etc/mail 

重新启动sendmail来获取更改

 /etc/init.d/sendmail reload 

configurationtesting

 echo "Just testing my sendmail gmail relay" | mail -s "Sendmail gmail Relay" [email protected] 

此时你应该有继电器工作。 现在我们将转向这个虚拟引擎。

的virtusertable

为了创build可映射的映射,必须首先在服务器的/ etc / mail /目录中创build一个文本文件。 virtusertable中的每个条目应该在一行上。 原始收件人地址在左侧,一个或多个空格或制表符将其与右侧分开,其中包含目标地址。

例:

 vi /etc/mail/virtusertable [email protected] [email protected] @domain.com [email protected] 

任何时候对/ etc / mail / virtusertable文本文件进行更改,都需要创build一个sendmail可以读取的db文件。 以root运行时,以下命令将创build/etc/mail/virtusertable.db文件:

 makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable 

现在重新启动sendmail,所有应该按预期运行。

 /etc/init.d/sendmail reload 

你有没有试过ssmtp?

SMTP是一个从本地计算机发送邮件到configuration的邮件主机(mailhub)的程序,

与gmail设置

http://www.havetheknowhow.com/Configure-the-server/Install-ssmtp.html

https://wiki.archlinux.org/index.php/SSMTP

您可能需要使用Gmail进行身份validation才能发送邮件。 否则,邮件可能被视为垃圾邮件。 这是通过configuration客户端密码(您的服务器是客户端)条目来完成的。

对于Exim4安装,我会做以下几点:

  • 将服务器configuration为使用其中一个Gmail的MX地址作为智能主机(使用身份validation);
  • 为您的域configuration通配符别名; 和
  • 为域设置通配符别名别名。

默认别名路由器不处理通配符,但它是添加通配符的简单修改。

这些步骤适用于您要使用的任何服务器软件。 某些软件可能会默认使用智能主机。

Sendmail仅向本地电子邮件域( $=w )和$={VirtHost}列出的域的电子邮件地址提供virtusertable。
Sendmail默认会自动添加一些名字给$=w

你可以使用下面的命令作为根检查上面的列表(类)

 echo `$=w` | sendmail -bt echo `$={VirtHost}` | sendmail -bt 

1)您可以在sendmail.mc中将domain.com添加到$={VirtHost}

 LOCAL_CONFIG C{VirtHost} domain.com divert(0)dnl 

2)您可以允许在互联网上的任何地方使用以下访问表条目中继域:

 to:domain.com RELAY 

警告
A)因为它会使信封发送者不变,gmail可能拒绝或将垃圾邮件视为垃圾邮件
B)如果没有反垃圾邮件过滤function,build议不要转发到Gmail
=>我会推荐(略)更复杂的解决scheme,通过procmail脚本中继。 它将重写信封发件人并提供反垃圾邮件挂钩