Logback appender和Postfix

时间:2012-06-19 15:41:04

标签: java email postfix-mta logback appender

我正在尝试创建一个过滤器来过滤ERROR级别以下的任何日志,并使用这些日志发送电子邮件。 这就是我的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>

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

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

我想这意味着我在服务器上配置postfix的方式出了问题。 我很乐意在这里发布main.cf文件中的任何信息(我根本不想发布所有信息)。

1 个答案:

答案 0 :(得分: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,将debug元素的<configuration>属性设置为true几乎总是一个好主意,以便在控制台上查看logback的内部消息。如:

<configuration debug="true">...</configuration>