首先,我成功configuration了一个工作的Postfixconfiguration,使用SendGrid SMTP发送邮件。
现在我修改configuration以使用Exchange 2013 SMTP服务器发送邮件。
我从很多论坛看,我找不到什么不工作。 每次我尝试发送mail.log中的邮件时: SASL Authentication failed; server XXX.XXX.XXX.XXX[XXX.XXX.XXX.XXX] said: 535 5.7.3 Authentication unsuccessful SASL Authentication failed; server XXX.XXX.XXX.XXX[XXX.XXX.XXX.XXX] said: 535 5.7.3 Authentication unsuccessful
这里是main.cfg:
# 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. smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = MYNAME alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = MYNAME, localhost.localdomain, localhost mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_command = procmail -a “$EXTENSION” mailbox_size_limit = 51200000 recipient_delimiter = + inet_interfaces = loopback-only default_transport = smtp relay_transport = smtp inet_protocols = ipv4 myorigin = /etc/mailname # enable SASL authentication smtp_sasl_auth_enable = yes smtp_sasl_password_maps = static:Domain\[email protected]:password smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt header_size_limit = 4096000 relayhost = XXX.XXX.XXX.XXX:587 #smtp_tls_security_level=none
你的configuration:
smtp_sasl_password_maps = static:Domain\[email protected]:password
是错的。
该文档是: http : //www.postfix.org/postconf.5.html#smtp_sasl_password_maps
smtp_sasl_password_maps(默认:空)
具有一个用户名的可选Postfix SMTP客户端查找表:每个发件人,远程主机名或下一跳域的密码条目。 每个发件人查找只有在启用了发件人相关authentication的情况下才能完成。 如果找不到用户名:密码条目,则Postfix SMTP客户端不会尝试向远程主机进行身份validation。
Postfix SMTP客户端在进入chroot jail之前打开查找表,所以你可以把密码文件保存在/ etc / postfix中。
指定零个或多个“type:name”查找表,用空格或逗号分隔。 表格将以指定的顺序search,直到find匹配。
要了解查找表,请查看表格上的postfix文档
因此,您可能需要使用交换服务器凭证创build一个文件,将其映射到构build哈希数据库并将smtp_sasl_password_maps指令指向该文件。
[your.exchange.server]:587 [email protected]:密码
[]表示您不想在主机上执行mx查找,而587是提交端口。 修改以满足您的要求。
这个文件包含证书,保护它,至less它不应该是世界可读的。 理想情况下只有root应该读/写它。
postmap sasl_password文件:
# postmap hash:/etc/postfix/sasl_password [enter]
这将创build后缀将使用的散列数据库文件/etc/postfix/sasl_password.db。
修改你的main.cf:
smtp_sasl_password_maps = hash:/ etc / postfix / sasl_passwd
重新启动后缀服务(取决于你的操作系统,如果你不知道该怎么做,重启服务器)。 testing看它是否工作。