1

我正在尝试创建一个附加程序来过滤低于错误级别的任何日志并使用这些日志发送电子邮件。这就是我的 logback.xml 文件的样子(只是 appender 部分):

<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <!-- deny all events with a level below ERROR -->
        <level>ERROR</level>
    </filter>
    <smtpHost>${smtpHost}</smtpHost>
    <smtpPort>${smtpPort}</smtpPort>
    <STARTTLS>true</STARTTLS>
    <username>${username}</username>
    <password>${password}</password>
    <to>${mailingList}</to>

    <from>${username}</from>
    <subject>%logger{20} - %m</subject>
    <layout class="ch.qos.logback.classic.html.HTMLLayout"/>
    <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl">
          <bufferSize>1</bufferSize>
    </cyclicBufferTracker>
</appender>

smtpHostlocalhost在哪里usernamepassword属于我在运行应用程序的服务器上创建的用户。它似乎不起作用 - 没有发送电子邮件。

但是,当我为另一台服务器(即 )设置参数时smtpHost = smtp.gmail.com,我会按预期收到电子邮件。

我想这意味着我在服务器上配置后缀的方式有问题。我很乐意在此处发布main.cf文件中的任何信息(我只是不想全部发布)。

4

1 回答 1

1

这是一个很长的镜头,但这里有一个想法。Posfix 通常被配置为拒绝来自未发出有效 helo_hostname 的发件人的电子邮件。postfix 的 main.ch 是否有类似于以下的指令?

smtpd_helo_restrictions =
        reject_non_fqdn_helo_hostname,
        reject_invalid_helo_hostname

smtpd_sender_restrictions = 
        reject_non_fqdn_sender,
        reject_unknown_sender_domain

如果是这样,您可能希望将SMTPAppenderlocalhost的属性设置为合理的值。顺便说一句,可能不应该用于设置和用于后缀。${username}<from><username>

BYW,将element的debug属性设置为在控制台上查看 logback 的内部消息几乎总是一个好主意。如:<configuration>true

<configuration debug="true">...</configuration>
于 2012-06-19T19:38:30.393 回答