読者です 読者をやめる 読者になる 読者になる

VMware Player上のdebianからメールが送れなかった

VM上のdebianからメールを送ろうとしたらホスト側のavast!が邪魔をしていた、という話です。

 

普段、私はWindowsのノートパソコン上で常にdebianVMware Playerで動かしています。ある日、debianからGmailを送ろうと思い、msmtpをインストール、設定をしたのですが、なぜか認証に失敗して送ることができませんでした。100%正しいサーバに接続されることが保証されるのであれば、こうした認証も必要ないとのことですが、やはり心配なので。

具体的には、次のようなメッセージです。

msmtp: TLS certificate verification failed: the certificate hasn't got a known issuer

 

Arch Linux Wikiから引用しましたが、そこに書かれている通り、tls_trust_fileが正しくないとのこと。あちこち探して試してみましたが、どうしてもうまくいきませんでした。

 

そこでとりあえず妥協しようということで、

$ msmtp --tls-certcheck off

 

して認証なしで試してみました。そうすると、無事送ることができるじゃないですか。

そのテストメールを見てみると、末尾に見覚えのない怪しげな文言が。

---
アバスト! アンチウイルス によって保護されているため、このメールはウイルスやマルウェアに感染していません。
http://www.avast.com

 

試しにmsmtp -SしてみるとIssuerに「Avast!」と書かれていました。

どうやら、ホスト側でインストールされているAvast!が勝手にSMTPで送信されるメールをスキャンして、ブロックしていたみたいです。

これには自分にも問題があって、ネットワーク接続をNATにしていたのでした。これだと、Avast!から見れば、通常のWindows上のメールクライアントからメールを送ろうとしているように見えるはずなのでブロックしようとするのもまあ、自然かと思います。やや過剰に思えますが。

試しにVMをブリッジ接続にして試してみると、認証ありでも成功しました。

 

解決策としては次の3通りが考えられます。

  1. avast!にはだまっててもらう。
  2. VMをブリッジ接続にする。
  3. avast!の発行する証明書を使う。

1.では、vast!の設定からSMTPをスキャンしない、SSL接続のスキャンをオフにするなどが考えられますが、ホスト側にも影響するので、あまりよくないと考えられます。

2.では、VMのIPが変わってしまうので、sshで接続するのが面倒になるので、あまりよくないかも。

3.でも、わざわざavast!の発行する証明書をVMに入れるのが面倒ですが、まだ1,2,よりはマシです。

 

そんなわけで、思わぬトラップがあったのでした。

というか、デフォルトで勝手にメッセージ追加すんなよ..

 

参考:

msmtp 1.4.32

msmtp - ArchWiki