Tomcat kann keine Mails verschicken, wie debugge ich das?

tori

Cadet 4th Year
Registriert
Apr. 2009
Beiträge
75
Eine Java/Tomcat-Anwendung auf einem Server möchte Mails verschicken und das geht nicht. Die Mails kommen nicht an, ich finde keine Fehlermeldung.

Mir fehlen an der Stelle so ein bisschen die handwerklichen Mittel das Problem zu untersuchen. Ich kann mir den Java-Quelltext anschauen aber da das bis vor ein paar Tagen noch geklappt hat, kann es daran eigentlich nicht liegen. Das Programm wurde bereits seit längerer Zeit (>1Jahr) nicht mehr modifiziert. Der Mailserver lässt sich in einer Config-Datei einstellen und lautet 127.0.0.1:25. Soweit so gut, da läuft ein Postfix, und der kann sogar Mails verschicken:
Code:
echo "Hello World" | mail -s "Test" admin@domain.de
Netstat zeigt den Server auch an:
Code:
root@...:~# netstat -anp | grep :25
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      22511/master
Die Firewall lässt das auch durch.

Im Mail Info-Log steht, dass er das Zertifikat vom SMTP nicht verifizieren kann, aber wie gesagt, Mails verschicken geht trotzdem. Nur nicht aus dem Java-Programm.

Was bleibt mir noch? Das Java-Ding ist recht unhandlich, ich habe jetzt auch keine IDE installiert um mir da Überblick zu verschaffen. Es benutzt org.springframework.mail.MailSender zum verschicken der Mails. Im Log der Anwendung selbst findet sich aber nichts zu dem Fehler.
 
MTA Logs, also /var/log/mail.log z.B.

Paste doch mal die Fehlermeldiung(en).
 
Javadoc:
>>>>>>>>>>
/**
* Send the given simple mail message.
* @param simpleMessage the message to send
* @throws org.springframework.mail.MailParseException
* in case of failure when parsing the message
* @throws org.springframework.mail.MailAuthenticationException
* in case of authentication failure
* @throws org.springframework.mail.MailSendException
* in case of failure when sending the message
*/
void send(SimpleMailMessage simpleMessage) throws MailException;
<<<<<<<<<<

Findest du in keinem Log eine dieser Exceptions?
 
Code:
root@...:...# grep "MailParseException" .
root@...:...# grep "MailAuthenticationException" .
root@...:...# grep "MailSendException" .
root@...:...# grep "MailException" .
root@...:...#
Gibt alles nichts zurück. In den Logdateien steht aber etwas drin, also gefüllt sind die schon... Nur halt so Standard Access-Log Sachen...

In /var/log/mail.err steht nichts, in mail.log steht das gleiche wie im syslog, in mail.warn steht nichts.

Nachfolgend ein Beispiel aus dem Syslog. Sowas kommt bei jeder verschickten Mail. Wenn ich das per Bash mache kommt die Mail sogar an... user@domain etc sind jeweils ersetzt, der hostname ist durch ... ersetzt. Strato habe ich mal so gelassen.
Code:
Jul 17 09:37:00 ... postfix/smtpd[7903]: connect from localhost[127.0.0.1]
Jul 17 09:37:00 ... postfix/smtpd[7903]: 0C41C11E07A: client=localhost[127.0.0.1]
Jul 17 09:37:00 ... postfix/cleanup[7908]: 0C41C11E07A: message-id=<1187168541.582.1405582620051.JavaMail.confluence@...>
Jul 17 09:37:00 ... postfix/qmgr[22518]: 0C41C11E07A: from=<noreply@domain.de>, size=18845, nrcpt=1 (queue active)
Jul 17 09:37:00 ... postfix/smtpd[7903]: disconnect from localhost[127.0.0.1]
Jul 17 09:37:00 ... postfix/smtp[7910]: 0C41C11E07A: to=<user@domain.de>, relay=smtp.strato.de[81.169.145.133]:25, delay=0.23, delays=0.05/0.01/0.1/0.06, dsn=2.0.0, status=sent (250 2.0.0 queued as u027ffq6H7b00Gt)
Jul 17 09:37:00 ... postfix/qmgr[22518]: 0C41C11E07A: removed
Jul 17 09:37:00 ... postfix/smtp[7910]: certificate verification failed for smtp.strato.de[81.169.145.133]:25: untrusted issuer /C=DE/O=Deutsche Telekom AG/OU=T-TeleSec Trust Center/CN=Deutsche Telekom Root CA 2
 
Wenn du über die Bash mails verschickst, verschickst du die dann auch als noreply@domain.de? Fühlt sich dein Mailserver für noreply@domain.de verantwortlich? Die meisten Mailserver machen ein Sender verify und wenn es den Absender nicht gibt, dann wird die Mail abgelehnt.... Das müsstest du aber in deinem mail.log sehen...
 
Deine Mail kommt beim MTA an und wird dort wahrscheinlich nicht weiterverarbeitet.

Check mal deine mailqueue: "mailq" oder "postqueue -p". Wenn postfix die Mail wirklich gesendet hätte müsste das auch im Log auftauchen aber ich denke das falsche Cert verhindert dies.
 
Zurück
Oben