我有一个postfix电子邮件服务器,我想调试一个问题。 如何配置它以将每封电子邮件的副本发送到我的电子邮件(除了将电子邮件发送给目标收件人)。
答案 0 :(得分:8)
我最近有这个工作,所以虽然我分享:
使用postfix和cyrus imap将所有外发邮件发送到已发送文件夹。
摘要
将后缀发送所有外发电子邮件的密送副本发送到特殊的“已发送” 邮件帐户。使用此特殊帐户筛选重定向所有电子邮件 到与帐户关联的已发送文件夹。
为已发送的
创建电子邮件用户帐户最简单的方法是为发送的新的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
为已发送的帐户创建筛选脚本
此脚本会将所有传入的电子邮件重定向到已发送的帐户 发件人收件箱中的已发送文件夹。
我的脚本名为sent.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的密件抄送映射
在postfix目录(/ etc / postfix on debian)上创建一个名为的文件 bcc_map看起来像这样:
# copy all locally sent mail to the sent account
@yourdomain.com sent@yourdomain.com
使用以下命令将其编译为后缀哈希文件:
host$ sudo postmap bcc_map
将以下行添加到postfix main.cf配置文件中:
sender_bcc_maps = hash:/etc/postfix/bcc_map
并使postfix重新加载其配置:
主机$ sudo /etc/init.d/postfix reload
测试和调试
发送一些电子邮件并检查它是否已复制到“已发送”文件夹中。
如果出现问题,您应该检查cyrus和postfix日志
(全部登录到我的debian主机上的/var/log/syslog
)。错别字
访问权限通常会导致一些线索被发送到
日志。
答案 1 :(得分:3)
只需在/etc/postfix/main.cf中添加always_bcc=youremail@gmail.com
并重新启动postfix服务器即可。我在底部添加了这一行。
它似乎真的有效。有关always_bcc here
的更多信息请不要忘记先备份此文件。