Postfix、saslauthd、mysql、smtp认证问题

ita*_*oda 4 mysql smtp postfix saslauthd

试图在我正在运行的邮件服务器 (ubuntu 10.04) 上进行身份验证,但遇到了问题。我有一个带有用于 smtp 设置的 postfix 的服务器,带有 courier 设置的 imap 服务器。我的后缀身份验证正在使用赛勒斯(我还没有真正尝试过 dovecot) saslauth。用户名和密码存储在 MySql 数据库中。使用 imap-ssl 登录可在远程客户端 (thunderbird) 上运行,我可以阅读我的邮件。我无法让 SMTP 端工作,并将问题集中在 saslauth。

测试

testsaslauthd -u 'username' -p 'passowrd' -s smtp 
Run Code Online (Sandbox Code Playgroud)

返回

connect() : Permission denied
Run Code Online (Sandbox Code Playgroud)

数据库中的密码是加密的,我猜这个 testaslauthd 将采用纯文本密码并对其进行加密。

找人来引导我完成这项工作。我是邮件服务器的新手,从来没有完全工作过。谢谢。问我应该查看/发布哪些日志文件,要运行哪些测试,要检查的权限。

编辑: (2012 年 3 月 26 日)有关更多信息,我无法让任何邮件客户端正常工作,他们给出了类似的错误

The message could not be sent because connecting to SMTP server <mydomain.com> failed. The server may be unavailable or is refusing SMTP connections
Run Code Online (Sandbox Code Playgroud)

我在 iptables 上打开了各自的端口,但我猜测这是一个内部问题,因为我在上面运行了测试。我也运行telnetmail.mydomain.com 25和运行ehlo localhost,作为回报获得此

250-mail.domain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Run Code Online (Sandbox Code Playgroud)

编辑:(2012/3/28 下午 2:45)

~$ postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mime_header_checks = regexp:/etc/postfix/mime_header_checks
mydestination = mail.mydomain.co, localhost, localhost.localdomain
myhostname = mail.mydomain.co
mynetworks = 127.0.0.0/8
myorigin = /etc/mailname
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
readme_directory = no
recipient_delimiter = +
relayhost =
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf, mysql:/etc/postfix/mysql-email.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-mailboxes.cf
virtual_uid_maps = static:5000
Run Code Online (Sandbox Code Playgroud)

编辑:已解决(3/29/2012) 感谢@AveryPane 和@malloc4k 为我指明了正确的方向。我必须做一些事情,确保我的 MX 记录顺序正确。我使用了工具 intodns.com 和http://www.mxtoolbox.com来检查我的服务器是否正在接受连接。然后使用 tail -f 我查看了我的日志是否有任何错误,很高兴看到在我理顺 DNS 记录并调整了一些配置文件后实际上有一些东西被记录了下来。

我不知道的两件事之一是一些 ISP 阻止了端口 25,这可能是我的情况下为什么雷鸟没有在端口 25 上看到我的服务器。文件中的第二个/etc/postfix/master.cf是关于允许哪些端口的设置后缀来听。默认端口 25 在那里

smtp      inet  n       -       -       -       -       smtpd
Run Code Online (Sandbox Code Playgroud)

这基本上说 hi im postfix,我在端口 25 上运行。如果你想在另一个端口上运行 postfix,587 是邮件服务器常用的,请在 master.cf 中附近添加这一行

587      inet  n       -       -       -       -       smtpd
Run Code Online (Sandbox Code Playgroud)

运行重新启动/etc/init.d/postfix restart,你应该设置。这就是我的解决方案。

Ave*_*yne 5

找人来引导我完成这项工作。我是邮件服务器的新手,从来没有完全工作过。

欢迎来到电子邮件地狱,我的朋友。你们相处得很好。首先,如果你真的很想运行一个电子邮件服务器,你会想要学习。电子邮件就像大多数公用事业服务一样——被认为是理所当然的,但没有人愿意考虑让它发挥作用所涉及的工作。我会推荐 O'Reilly 的优秀(并且非常简短)的书Postfix: The Definitive Guide,它是有关运行 Postfix 的极好信息来源。

我还会花时间阅读一些基本的“游戏规则”,因为许多全球电子邮件系统基本上是一堆绅士协议,不跺脚彼此交付。当然,您可以翻阅大量的文档,例如RFC 2142和其他文档,但我认为我们可以将其浓缩为一些简单的规则:

  • 做一个负责任的管理员。 这意味着拥有一个功能性的abuse@yourveryowndomain.com 地址和一个postmaster@yourveryowndomain.com,它实际上不是一个比特桶。将这些发送到 /dev/null 是另一种进入黑名单的好方法。毕竟,谁愿意来对付别人,不听他人的问题,他们都在做什么?
  • 您现在是社区的一部分。这意味着您会遇到其他管理员,他们以不同的方式做事,并且对如何完成工作有不同的看法。只要他们是明智的或有理由的,就放松并倾听。
  • 在这个社区中,您负责自己的服务器。 如果其他人发现您在做一些不体面的事情(例如成为垃圾邮件公开中继 - 稍后会详细介绍),您将很快被列入黑名单。尽最大努力做正确的事情。
  • 运行您自己的服务器意味着您已将您的资源投入其中。不要被垃圾邮件发送者(冒充“电子邮件营销人员”)所左右,告诉您他们有权对您的资源做任何他们想做的事情。我经常以“但是-但是-但这不是您的决定,这是收件人的决定,您应该让我的电子邮件通过”的形式听到这种说法。你的回答应该总是,“这是我的决定,它是我的服务器,现在是我黑名单上的一个褪色记忆。”
  • 其他服务器不是您可以使用的资源;你使用它们是出于善意和他人的考虑。 善待其他管理员,并牢记向其服务器发送大量电子邮件的“黄金法则”。如果有人将一封电子邮件转发到您服务器上的 2,000 个不同的邮箱,并在几分钟内延迟交付,您会喜欢吗?
  • 在您完成所有设置并运行一段时间后,请定期返回并检查您的日志。是的,每小时成千上万条条目是垃圾邮件发送者,它们试图 (a) 将他们的猪肉副产品发送到您的收件箱,或 (b) 将您作为跳板将其发送给其他人。这导致我们...
  • 垃圾邮件发送者每隔几个月就会改变策略。 通常,在您的反垃圾邮件设置中稍作调整就足以让麻烦消失。
  • 出于对 ${DIETY} 的热爱,不要在互联网的公共端运行开放式中继。 开放中继的概念,即一台可以接收任何人的电子邮件并将其发送到任何地方的机器,是过去时代的遗物,当时互联网是一个更友善、更温和的地方。在当今时代,垃圾邮件发送者会找到您,他们会将您的机器变成他们自己的个人电子邮件机枪,并且最终会在此过程中诽谤您的好名声。
  • 您会遇到不关心他们服务器的管理员,就像防御性司机在路上寻找其他(愚蠢的)司机一样,您需要留意他们。
  • 坏管理员通常配置坏服务器。 那里有一些商业提供商只想快速赚钱,他们不在乎其他人在“大肆抨击”他们的服务器时会发生什么。这意味着你会遇到做蠢事的服务器,一些管理员会和你通电话并想就为什么这是“你的问题”而不是他们的问题交换意见。仔细检查您的服务器并确保它确实不是您,然后礼貌地通过四点提示告知他们他们的错误......

还有很多很多,但这些基本的东西应该让你指向正确的方向。


我无法让任何邮件客户端工作,

关于您问题的“客户端无法发送”部分,问题与您接受电子邮件的域有关。具体来说,您的帖子提到:

mydestination =
myhostname = my.domain.com
Run Code Online (Sandbox Code Playgroud)

这两个都不正确。看看这里设置的mydestination参数,这里myhostname参数。这两个参数基本上告诉 postfix 它将接受哪些交付,基于 To: 电子邮件地址的右半部分。将它们设置为空my.domain.com意味着它只会接受交付,my.domain.com但它仍然不会交付它,因为它mydestination是空白的。我可能是错的,但我认为这不是你想要的。