将本地邮件从带有postfix的homeserver转发到webmail

时间:2014-01-07 21:28:06

标签: email debian crontab postfix-mta webmail

在标题的上下文中,我有以下设置:

  • 我拥有一个主机名,让我们说:my_hostname.com
  • my_hostname.com的A记录使用动态dns指向我的家庭ip,让我们说:50.50.50.50
  • 我的家庭路由器将端口转发到我的主页服务器:80& 22
  • my_hostame.com的MX记录指向:my_personal_hash.pamx1.hotmail.com
  • 在此Outlook帐户中,我有一个子帐户:my_name@my_hostname.com

这一切都很好,我可以使用my_hostname.com ssh到我的主服务器,使用我自己的web界面,并在microsoft的服务器上的my_name@my_hostname.com上接收邮件,这些服务器总是有一个在线服务器。

但现在以下内容: 我的homeserver生成本地邮件。这与使用crontab和人们试图猜测我的sudo密码(只是在我的地方的人所以没有这么大的交易)。这都放在var / mail / my_name中,我试图用postfix将这些邮件转发到my_name@my_hostname.com。 (我也尝试过my_name@google.com),但都没有收到我的邮件。

我知道我的邮件可能被拒绝了,因为我使用家庭服务器发送邮件,但我如何解决这个问题。

这是我的/etc/postfix/main.cf文件:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = my_hostname.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8, 192.168.1.0/30
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all
default_transport = error
relay_transport = error

virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp

在virtual-regexp中,它是两个尝试过的邮件地址之一。发送带有“mail send”的测试邮件到my_name @ localhost后,/ var / log / mail.info生成以下内容:

Jan  7 18:44:47 homeserver postfix/pickup[7729]: 707C111FDEA: uid=0 from=<root>
Jan  7 18:44:47 homeserver postfix/cleanup[7960]: 707C111FDEA: message-id=    <20140107174447.707C111FDEA@my_hostname.com>
Jan  7 18:44:47 homeserver postfix/qmgr[3769]: 707C111FDEA: from=    <root@homeserver.my_hostname.com>, size=329, nrcpt=2 (queue active)
Jan  7 18:44:47 homeserver postfix/error[7962]: 707C111FDEA: to=    <my_name@my_hostname.com>, orig_to=<my_name@localhost>, relay=none, delay=0.06,     delays=0.04/0/0/0.02, dsn=5.0.0, status=bounced (my_hostname.com)
Jan  7 18:44:47 homeserver postfix/error[7962]: 707C111FDEA: to=   <my_name@my_hostname.com>, orig_to=<make>, relay=none, delay=0.07, delays=0.04/0/0/0.03, dsn=5.0.0, status=bounced (my_hostname.com)
Jan  7 18:44:47 homeserver postfix/cleanup[7960]: 805CB11FDF6: message-id=<20140107174447.805CB11FDF6@my_hostname.com>
Jan  7 18:44:47 homeserver postfix/bounce[7963]: 707C111FDEA: sender non-delivery  notification: 805CB11FDF6
Jan  7 18:44:47 homeserver postfix/qmgr[3769]: 805CB11FDF6: from=<>, size=2359, nrcpt=1 (queue active)
Jan  7 18:44:47 homeserver postfix/qmgr[3769]: 707C111FDEA: removed
Jan  7 18:44:47 homeserver postfix/error[7962]: 805CB11FDF6: to=<my_name@my_hostname.com>, orig_to=<root@homeserver.my_hostname.com>, relay=none, delay=0.05, delays=0.03/0/0/0.02, dsn=5.0.0, status=bounced (my_hostname.com)
Jan  7 18:44:47 homeserver postfix/qmgr[3769]: 805CB11FDF6: removed

我犯了什么重大错误,如何将内部生成的邮件发送到我的网络邮箱?

1 个答案:

答案 0 :(得分:4)

好的,通过一些研究,我找到了答案。

首先,我犯了两个错误。经过几次查看后,第一个实际上非常明显。只需删除:

default_transport = error
relay_transport = error

第一个问题已经解决,但后来我留下了:

Jan  8 10:13:55 homeserver postfix/smtp[12914]: B62C311FE09: to=<my_name@gmail.com>, orig_to=<my_name@localhost>, relay=none, delay=1588, delays=1438/0.01/150/0, dsn=4.4.1, status=deferred (connect to alt4.gmail-smtp-in.l.google.com[174.193.63.25]:25: Connection timed out)

当我转发到我的Gmail帐户时。转发到my_name@my_domain.com也会导致连接超时。

在谷歌搜索后,我在this topic发现我的ISP可能阻止了传出端口25的流量。这可以通过以下方式验证:

telnet aspmx.l.google.com 25

如果它没有生成已连接到aspmx.l.google.com ,但超过半分钟后超时会阻止您的传出流量。 {不要忘记在使用之前安装telnet;)}。

这是我的第二个问题。幸运的是,通过解决这个问题,我的脖子不那么难了。

通过使用端口587通过安全连接重定向,我能够发送邮件。为此,我使用了this post和一个新的Google帐户作为我的服务器。我不打算重新输入整个post所以只要点击它并阅读它就会发现你感兴趣。我还删除了virtual-regexp文件和链接器以便兼容。

现在我通过端口587从我的家庭服务器通过my_server_name@gmail.com发送邮件到my_name@my_hostname.com,这一切都很棒!

Jan  8 12:09:28 homeserver postfix/smtp[14135]: 6402811FE19: to=<my_name@my_hostname.com>, orig_to=<my_name@localhost>, relay=smtp.gmail.com[173.194.65.109]:587, delay=7063, delays=7061/0.04/0.58/1.4, dsn=2.0.0, status=sent (250 2.0.0 OK 1389179378 v7sm188296448eel.2 - gsmtp)

我很开心:) 如果这对你有任何帮助,请投票。