mailx
一般的なパッケージアプリを使用して電子メール通知を送信したいです/bin/mail
。
echo "Testing alerts from prod server" | mail -s "Example email" [email protected]
mydomain.comのDNSを制御します。 mydomain.comはGoogle Appsも使用しています。
Google Apps は通常、任意の SMTP クライアントからメールを配信しません。Googleアプリケーションが自分のUnixサーバーを「信頼」してメールを送信できるようにする最善の方法は何ですか?
答え1
電子メールを送信するには、スマートホストの認証を設定する必要があります。この場合、スマートホストはGoogleサーバーです。
大まかに言えば、その仕組みは次のようになります。
(authentication)
mail -----------> local mailserver ----------------> remote smarthost
つまり、ローカルメールサーバーはクライアントプログラム(たとえばmail
)からメッセージを受け取り、認証してリモートスマートホストに転送します。
ローカルで使用するメールサーバーを指定していませんが、Eximの例を使用します。 Eximの場合は、/etc/exim4/passwd.client
パスワードファイルにエントリを追加する必要があります。これはファイルのデフォルト状態です。
# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
コメントを見ると、man 5 exim4_passwd_client
より多くの情報があります。
使用されるサーバーは異なる場合がありますが、ほとんどのディストリビューションにはデフォルトでローカルメールサーバーが設定されていると思います。 DebianとUbuntuにはデフォルトでEximが設定されている可能性があります。メールサーバーがインストールされていても、デフォルトでスマートホストに接続するように設定されていない可能性があります。
ローカルメールサーバーがインストールされていない場合は、インストールする必要があります。認証のためにローカルメールサーバーをバイパスし、スマートホストに直接送信するプログラムがありますが、これは良い方法ではありません。
答え2
説明されている「セキュリティレベルの低いアプリケーション」を有効にする必要があります。ここ電子メールを受け入れるようにしてください。しかし、私は通常のGmailアカウントを使用しています。
答え3
古い質問をもう一度アップロードして申し訳ありません。ただし、この質問の検索結果には引き続き表示されます。
私が見つけたのは、Googleが今度は完全な「デバイス管理」を実行しているので、ログインしたいすべてのデバイスにアクセスする必要があるということです。
https://accounts.google.com/DisplayUnlockCaptcha
問題は、私のexim4サーバーにX11設定がなく、リンクに移動して「続行」ボタンを押すと動的に生成されたトークンURLを抽出する魔法のCURL式を見つけることができないことです。そのリンクへ。
したがって、exim4でTLS / mtaサポートを設定しましたが(GoogleはSSH / smtpsをサポートしていません)、smtp.google.com:587に接続するには、次の操作を行わないと、ユーザー名/パスワードは許可されません。
https://myaccount.google.com/lesssecureapps?utm_source=google-account&utm_medium=web
「セキュリティレベルの低いアプリケーション」へのアクセスを有効にします。
以下を使って手動でテストしたりしました。
openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf
発行済み:
EHLO {servername}
AUTH PLAIN {base64 encoded combo username password string}
エラーが発生するたびに:
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials l22sm5213582ywl.68 - gsmtp
以下を使用して、Base64でエンコードされた文字列を取得できます。
echo -ne "\0{login_email}\0{login_password}"|base64
「セキュリティレベルが低いアプリを有効にする」を設定すると、上記の例では次のようになります。
235 2.7.0 Accepted
そしてexim4も仕事を始めました。
認証コードリンクにアクセスするCLI方法をお勧めできる人はいますか?