我是 Postfix 新手,我需要对其进行配置,以便将发送到我服务器的任何电子邮件都发送到本地用户帐户 (/etc/passwd)。我的服务器不会在任何地方列出任何虚拟域 ($mydestination),我只需要将所有未知邮件发送到本地用户帐户。
我看过一些与使用 luser_relay 和 local_receipients_maps 的配置相关的主题。但我不知道如何使用它们,如果你有时间,能告诉我如何使用吗?我在 centos 5.5 服务器上使用 postfix
提前致谢。
答案1
如果一切设置正确,您可以在 main.cf 中添加以下内容
luser_relay = username
local_recipient_maps =
将用户名替换为收件人的用户名或完整地址,例如john
或[email protected]
答案2
以下是我的做法:
virtual_transport = regex:/etc/postfix/virtual
root@testmailm01:/etc/postfix# cat virtual
/system/ [email protected] ###this allows you to send outbound logs to another server
/*/ webtest ###catch everything and drop it in the webtest mailbox
我们的 alpha 测试服务器直接将此框作为其邮件服务器,以便开发人员可以试验电子邮件地址。此外,我们的主要 SMTP 服务器有一个传输指令:
[adminuser@smtpserver01 adminuser]$ cat /etc/postfix/transport
example.com :[exchange.server.addy]
testing.example.com :[testmailm01.example.cfx]
这允许开发人员通过将 @ 更改为 @testing.example.com 来在 beta 和 prod 环境中测试某些内容,它会将带有该后缀的任何内容重定向到上述“测试”邮件服务器。
希望有所帮助。
编辑:您是否配置了 transport_maps 设置?postfix 问题的标准“帮助我”信息是“postconf -n”和“cat /etc/postfix/transport”的输出。此外,如果您能找到包含错误的完整对话,那将大有帮助。
如果你能找到其中一行(“grep 'web58007.mail.re3.yahoo.com' /var/log/maillog”或可能是/var/log/mail.log)
Jul 26 21:30:01 fjdx421.example.cfx postfix/qmgr[13444]: 2FBBF17B433: to=<[email protected]>, relay=none, delay=0, status=deferred (delivery temporarily suspended: connect to oram101.example.cfx[172.18.52.101]: Connection refused)
奇怪的字母数字是该对话的伪唯一标识符,执行“grep 2FBBF17B433 /your/mail/logfile”并发布该输出
编辑:首先,我很抱歉...我之前提到过传输地图,而您需要定义的是“virtual_alias_maps”。我的第一个回答是正确的,但后来,出于某种原因,我的大脑开始关注传输地图...我想是老了。
查看您的 postconf 输出,您需要定义:
postconf -e virtual_alias_maps = hash:/etc/postfix/virtual
postconf -e recipient_canonical = hash:/etc/postfix/recipient_canonical
然后,编辑/etc/postfix/virtual:
/*/ <your.test.account>
和 /etc/postfix/recipient_canonical:
/./ webtest
然后重新加载 postfixpostfix reload
完成后,您需要确保正确连接到此邮件服务器,因为它可能未在任何地方列为 MX 记录。最简单的测试方法是:
telnet <mail.server.addy> 25
以下对话样本主要包含虚假信息:
Connected to testmailm01.example.cfx.
Escape character is '^]'.
220 testmailm01 ESMTP Postfix
HELO nowhere.com
250 testmailm01
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
bla bla blah
.
250 2.0.0 Ok: queued as 9B4E820E249
此次对话的日志条目:
root@testmailm01:/etc/postfix# grep 9B4E820E249 /var/log/mail.log
Jul 27 08:37:17 testmailm01 postfix/smtpd[16125]: 9B4E820E249: client=someuser.example.cfx[172.18.47.102]
Jul 27 08:37:25 testmailm01 postfix/cleanup[18529]: 9B4E820E249: message-id=<20100727133717.9B4E820E249@testmailm01>
Jul 27 08:37:25 testmailm01 postfix/qmgr[1556]: 9B4E820E249: from=<[email protected]>, size=359, nrcpt=1 (queue active)
Jul 27 08:37:25 testmailm01 postfix/local[18554]: 9B4E820E249: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=17, delays=17/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jul 27 08:37:25 testmailm01 postfix/qmgr[1556]: 9B4E820E249: removed
我还配置了 virtual_transport,虽然在重新阅读描述后我不确定为什么。以防万一需要它(先尝试上面的方法,如果仍然不起作用,再添加这个)。这个盒子是半生产的,所以我不能随便摆弄配置来测试东西:
postconf -e virtual_transport = regex:/etc/postfix/virtual
虚拟文件保持不变,但您始终需要确保已对使用 hash: 语句的所有文件进行了 postmap:
postmap <file>
编辑:根据此:
Jul 28 20:17:18 rabbits postfix/smtpd[1369]: NOQUEUE: reject: RCPT from mail-wy0-f182.google.com[74.125.82.182]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-wy0-f182.google.com>
您正在向 amamun.info 发送电子邮件,但您的 mydestination 包含:
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = test.com
myhostname = rabbits.test.com
如果没有虚拟域名,我看不到任何内容可以让您的服务器接收发往 @amamun.info 的电子邮件。根据您想要对电子邮件执行的操作,您需要将该域添加到 mydestination 列表、relay_domains 或作为虚拟域名。
答案3
感谢您的回复,我在这里再次详细描述了我的要求
我需要配置我的 postfix,以便它能捕获所有邮件,无论是否是垃圾邮件,并且所有传入邮件都应发送到本地系统用户帐户。Postfix 将没有任何虚拟域列表。为此,我在 centos 5.4 服务器上安装了 postfix (postfix-2.3.3-2.1.centos.mysql_pgsql)。以下是我的配置:
[root@rabbits postfix]# /usr/sbin/postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = test.com
myhostname = rabbits.test.com
mynetworks = 127.0.0.0/8
myorigin = $myhostname
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
relay_domains =
sample_directory = /usr/share/doc/postfix-2.3.3/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
[root@rabbits postfix]#
假设我拥有一个域名 something.info,它的 MX 记录指向该服务器,但它的域名未在 postfix 配置文件中的任何地方列出,但我需要捕获所有发往“[电子邮件保护]“到像“catchtest”这样的本地系统帐户,同样,我想将所有其他未知域的电子邮件捕获到同一个本地帐户,无论它是否是垃圾邮件。所以为此我实际上需要在 postfix 配置文件中执行此操作。
谢谢。
编辑:嗨,感谢您的详细步骤,我尝试过但结果仍然是相同的,在发送邮件之前,它会拒绝并显示中继被拒绝消息。
Jul 28 20:17:18 rabbits postfix/smtpd[1369]: NOQUEUE: reject: RCPT from mail-wy0-f182.google.com[74.125.82.182]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-wy0-f182.google.com>
Jul 28 20:17:19 rabbits postfix/smtpd[1369]: disconnect from mail-wy0-f182.google.com[74.125.82.182]
这是根据您的配置修改后的 main.cf 文件
[root@rabbits postfix]# /usr/sbin/postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = test.com
myhostname = rabbits.test.com
mynetworks = 127.0.0.0/8
myorigin = $myhostname
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
relay_domains = sample_directory = /usr/share/doc/postfix-2.3.3/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_transport = regex:/etc/postfix/virtual
#cat /etc/postfix/virtual
/*/ admin@localhost
#cat recipient_canonical
/./ admin