問題の概要

問題の概要

問題の概要

私は現在 P2V 移行の過程にあり、Tomcat と Sendmail をうまく動作させるのに問題が生じています。アプリケーションでメールを送信できません。

2 つのシステムの主な違いは次のとおりです。

  • OSはCentOS 5.6からCentOS 7.2にアップグレードされています
  • Sendmail は 8.13.8 から 8.14.7 にアップグレードされました
  • Tomcatは以前はrootとして実行されていましたが、現在はtomcatとして実行されます。

同じ設定(上記の違いを除く)が現在、物理環境で動作しています。

アプリケーションは、ユーザー名やパスワードを指定せずに接続します。sendmail.mc 内のこれ以外に、sendmail 構成で認証を設定するものはありません。

define(`confAUTH_OPTIONS', `A')dnl

ログ

catalina.out から取得した主なエラーは次のとおりです。

Caused by: javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:590)
    at javax.mail.Service.connect(Service.java:291)
    at javax.mail.Service.connect(Service.java:172)
    at com.tw.manage.business.services.MailService.sendMessage(MailService.java:97)

完全なエラーは pastebin にあります。

ここで、逆コンパイルされた com.tw.manage.business.services.MailService.sendMessage コードを示します。

関連する app.properties は次のとおりです:

# Mail properties
# ---------------

# email server host
mailer.smtp.host=localhost

# email server port
mailer.smtp.port=25

# protocol either smtp or smtps
mailer.protocol=smtp

# user account
mailer.user=

# user password
mailer.password=

# either text/plain or text/html
mailer.mime.type=text/html;charset=UTF-8
mailer.subject.mime.type=UTF-8

# email message from email address
[email protected]

/var/log/maillog のエラーは次のとおりです:

Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: assigned id
Jan 18 14:02:40 app-server sendmail[46298]: NOQUEUE: connect from localhost.localdomain [127.0.0.1]
Jan 18 14:02:40 app-server sendmail[46298]: AUTH: available mech=GSS-SPNEGO GSSAPI ANONYMOUS, allowed mech=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: Milter: no active filter
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 220 app-server.company.inc ESMTP Sendmail 8.14.7/8.14.7; Wed, 18 Jan 2017 14:02:40 -0500
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: <-- EHLO app-server
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-app-server.company.inc Hello localhost.localdomain [127.0.0.1], pleased to meet you
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-ENHANCEDSTATUSCODES
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-PIPELINING
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-8BITMIME
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-SIZE
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-DSN
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-ETRN
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-AUTH GSSAPI
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-DELIVERBY
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250 HELP
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: disconnect level 1
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: in background, pid=46298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 421 4.4.1 app-server.company.inc Lost input channel from localhost.localdomain [127.0.0.1]
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: lost input channel from localhost.localdomain [127.0.0.1] to MTA after ehlo
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: disconnect level 1
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: in background, pid=46298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: localhost.localdomain [127.0.0.1] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: dropenvelope, e_flags=0x4001, OpMode=d, pid=46298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlink ./dfv0IJ2exL046298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: ./dfv0IJ2exL046298: unlink-fail 2
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlink ./qfv0IJ2exL046298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: ./qfv0IJ2exL046298: unlink-fail 2
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlock
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlink ./xfv0IJ2exL046298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: ./xfv0IJ2exL046298: unlink-fail 2
Jan 18 14:02:40 app-server sendmail[46298]: NOQUEUE: finis, pid=46298

私が試したこと

/etc/mail 内のすべての設定は、ビットごとに同じです。ホスト名などの環境変更は必要ないことを確認しました。設定では localhost または localhost.localdomain のみが呼び出されます。

私はホストファイルに次の内容を書きました:

127.0.0.1       localhost.localdomain   localhost old-app-hostname.vendor.net app-server app-server.company.inc

を使用して、ルート アカウントとその他のローカル アカウントとしてメールを送信するテストを行いtelnet localhost 25、希望する送信元メール アドレスを使用してサーバーから Gmail でメールを受信することができました。

また、Tomcat を root として実行することも試みました。

答え1

デフォルトのオプションが変更されたことがわかりました。sendmail 8.13 では、LOGIN がデフォルトで提供されていました。8.14 では、GSSAPI がデフォルトで提供されるようになったようです。/etc/mail/sendmail.mc の次の行により、sendmail を再起動した後に、tomcat からの空のログインが許可されました。

define(`confAUTH_MECHANISMS', `LOGIN')dnl 

関連情報