我有一个 Postfix 邮件服务器,可以执行以下操作:
- 使用以下命令发送邮件(例如发送给谷歌): “echo foo | mail -s 'bar'[电子邮件保护]“
- 使用 php mail() 发送邮件
- 从“root”或“myusername”发送和接收内部邮件。在〜/ Maildir /
TLS、spf 和 dkim 运行良好。(在 DNS 上运行了多次测试...)没有 dmarc 系统。
我的问题如下:在设置 TLS 之前,我可以接收来自 gmail 的邮件。但现在不行了。当我从 gmail 向我的服务器 example.com 发送邮件时,我在 /var/log/mail.log 中收到此信息
postfix/smtpd[2495]: 从 mail-pg1-f177.google.com[209.85.215.177] 连接
postfix/smtpd[2495]: 致命:未找到主机/服务 locahost/9898:名称解析暂时失败
postfix/master[2272]: 警告:进程 /usr/lib/postfix/sbin/smtpd pid 2495 退出状态 1
postfix/master[2272]: 警告:/usr/lib/postfix/sbin/smtpd:错误的命令启动 -- 限制
由于 opendkim 绑定在 localhost:9898 我怀疑问题出在这里但我不知道为什么?
postfix/main.cf:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain =
nocompatible_level = 2
tls_random_source = dev:/dev/urandom
smtp_tls_key_file = /etc..
smtp_tls_cert_file = /etc..
smtp_tls_CAfile = /etc..
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3
smtp_tls_loglevel = 1
smtpd_tls_key_file=/etc..
smtpd_tls_cert_file= /etc..
smtpd_tls_CAfile = /etc..
smtpd_tls_security_level = may
smtpd_tls_auth_only = 是
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
smtpd_tls_protocols=!SSLv2,!SSLv3
smtpd_tls_loglevel = 1
旧 TLS 参数
smtp_use_tls=yes
smtpd_use_tls=yes
smtp_tls_session_cache_database = btree:${data_directory}/smtpd_scache
authorized_submit_users = static:all
smtpd_relay_restrictions = permit_mynetworks、permit_sasl_authenticated、defer_unauth_destination
myhostname = BricoleServer1.bricole-s.com
masquerade_domains = bricole-s.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
myorigin = localhost
mydestination = $myhostname、localhost.$mydomain、example.com、mail.example.com、、localhost
replyhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
home_mailbox = .Maildir/
mailbox_size_limit = 0
mailbox_delimiter = +
inet_interfaces = all
inet_protocols = all
milter_default_action = 接受
milter_protocol = 2
smtpd_milters = inet:locahost:9898,
non_smtpd_milters = inet:localhost:9898,
master.cf:
(我已将“#”替换为“%”)% =================================================================================
% 服务类型 private unpriv chroot wakeup maxproc 命令 + 参数
% (是) (是) (否) (从不) (100)
% =========================================================================================
smtp inet n - y - - smtpd
%smtp inet n - y - 1 postscreen
%smtpd pass - - y - - smtpd
%dnsblog unix - - y - 0 dnsblog
%tlsproxy unix - - y - 0 tlsproxy
提交 inet n - y - - smtpd
% -o syslog_name=postfix/submission
-o smtpd_etrn_restrictions=reject
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_helo_restrictions=permit_mynetworks,permit
% -o smtpd_tls_auth_only=yes
% -o smtpd_reject_unlisted_recipient=no
% -o smtpd_client_restrictions=$mua_client_restrictions
% -o smtpd_helo_restrictions=$mua_helo_restrictions
% -o smtpd_sender_restrictions=$mua_sender_restrictions
% -o smtpd_recipient_restrictions=
% -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
% -o milter_macro_daemon_name=ORIGINATING
%smtps inet n - y - - smtpd
% -o syslog_name=postfix/smtps
% -o smtpd_tls_wrappermode=yes
% -o smtpd_sasl_auth_enable=yes
% -o smtpd_reject_unlisted_recipient=no
% -o smtpd_client_restrictions=$mua_client_restrictions
%-o smtpd_helo_restrictions=$mua_helo_restrictions
%-o smtpd_sender_restrictions=$mua_sender_restrictions
%-o smtpd_recipient_restrictions=
%-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
%-o milter_macro_daemon_name=ORIGINATING
我已经研究这个问题有一段时间了,并且愿意添加任何其他信息。
答案1
拼写错误。在设置中,您很可能想放 的位置smtpd_milters
写着locahost
(缺少) 。L
localhost
答案2
排除邮件服务器故障并非易事,因此真正看到日志中的错误(而不仅仅是一些片段)会很有帮助。无论如何,我会尝试... :)
首先我要设置:
- "smtpd_use_tls=可能“
- "smtp_use_tls=可能“
这是因为 2022 年没有多少服务器使用加密 smtp:如果您想要真正的邮件服务器,您必须接受加密和纯文本的传入/传出 smtp 连接。
请修复 smtpd_milter 中的拼写错误。
如果这还不够,请发送包含新错误的更新日志:也许有一些事情需要修复。
如果您愿意,您还可以与您的 postfix“对话”:SMTP 是一种简单的语言,因此您只需通过 telnet 进入您的 smtp 端口(25)并通过一个简单的对话框(以粗体显示您应该输入的内容)发送一封简单的电子邮件。
root@mail:/etc/postfix#telnet 本地主机 25
尝试 127.0.0.1...
已连接到本地主机。
转义字符是‘^]’。
220 mail.xxx.xxx ESMTP Postfix(Debian/GNU)
你好我的域名
250 邮件.xxx.xxx
邮件发件人:<>
250 2.1.0 确定
收件地址:[电子邮件保护]
250 2.1.5 确定
数据
354 以 结束数据。
不管怎样,只要在空白行上用一个点结束就可以了
。
250 2.0.0 确定:排队为 D36896344F
辞职
221 2.0.0 再见
外部主机关闭连接。