我有一个 postfix 电子邮件服务器,并且有一个我想调试的问题。如何将其配置为将每封电子邮件的副本发送到我的电子邮件(除了将电子邮件传递给其预期收件人)。
2 回答
只需添加always_bcc=youremail@gmail.com
/etc/postfix/main.cf 并重新启动 postfix 服务器。我在底部添加了这一行。
它似乎真的起作用了。更多关于 always_bcc这里
请不要忘记先备份此文件。
我最近得到了这个工作,所以虽然我会分享:
使用 postfix 和 cyrus imap 将所有外发邮件发送到 Sent 文件夹。
概括
使后缀将所有外发电子邮件的密件抄送副本发送到特殊的“已发送”邮件帐户。在此特殊帐户上使用 sieve 将所有电子邮件重定向到与该帐户关联的已发送文件夹。
创建用于发送的电子邮件用户帐户
最简单的方法是为 sent 创建一个新的 unix 帐户,将 shell 设置为 /bin/false 以防止任何人登录:
host$ sudo useradd sent host$ sudo chsh -s /bin/false sent
为发送的用户设置 imap
使用 cyradm 我们创建了一个新邮箱(即用户),并赋予该用户对我们所有 imap“已发送”文件夹的附加访问权限:
host$ $ cyradm -user cyrus localhost Password: <enter you cyrus user admin password here> localhost> createmailbox user.sent localhost> setaclmailbox user.%.Sent sent append Setting ACL on user.userx.Sent...OK. Setting ACL on user.usery.Sent...OK. . . . Setting ACL on user.userz.Sent...OK. localhost> exit
为发送的账户创建一个筛子脚本
此脚本会将所有传入的电子邮件重定向到已发送的帐户,以及发件人收件箱中的已发送文件夹。
我的脚本名为 send.sieve,看起来像这样:
# Sieve script for sent. If outgoing email is bcc'ed to this account, # this sieve script will redirect it to the sender's Sent folder require ["fileinto"]; if address :is :localpart "From" "userx" { fileinto "user.userx.Sent"; } elsif address :is :localpart "From" "usery" { fileinto "user.usery.Sent"; } elsif address :is :localpart "From" "userz" { fileinto "user.userz.Sent"; }
您需要为每个用户输入一个条目(上面示例中的 userx、usery、userz)。我一直无法找到更好的方法来做到这一点。欢迎向 marc@bloodnok.com 提出建议
像这样安装筛子脚本:
host$ sieveshell localhost -user=sent -a=cyrus Password: <enter you cyrus user admin password here> > put sent.sieve > activate sent.sieve > quit
为后缀设置密件抄送映射
在 postfix 目录(debian 上的 /etc/postfix)中创建一个名为 bcc_map 的文件,如下所示:
# copy all locally sent mail to the sent account @yourdomain.com sent@yourdomain.com
使用以下命令将其编译为后缀哈希文件:
host$ sudo postmap bcc_map
将以下行添加到后缀 main.cf 配置文件中:
sender_bcc_maps = hash:/etc/postfix/bcc_map
并使 postfix 重新加载其配置:
host$ sudo /etc/init.d/postfix 重新加载
测试和调试
发送一些电子邮件并检查它是否已复制到您的已发送文件夹中。
如果出现问题,您应该检查 cyrus 和 postfix 日志(都登录到
/var/log/syslog
我的 debian 主机上)。错别字和不正确的访问权限通常会导致一些线索被发送到日志中。