sendmail では、smtp 認証 sasl が実行されているため、これを行います。
root 1609 1 0 05:16 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root 1610 1609 0 05:16 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root 1611 1609 0 05:16 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root 1612 1609 0 05:16 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
root 1613 1609 0 05:16 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 5
Sasl sendmailの設定(/usr/lib/sasl2/sendmail.conf)
pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
私はsendmail smtpをこのように設定しました
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
もちろん、ファイルをコンパイルしてsendmailを再起動すると、smtp認証が機能するようです(telnet localhost)。
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 2097152
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
これにより、認証ログインでbase64でエンコードされたユーザーの入力を求められます。これを入力してからパスワードを入力して入力すると表示されます。
535 5.7.0 authentication failed
Base64に変換するには、このスクリプトを使用します。
#!/usr/bin/perl
use strict;
use MIME::Base64;
print encode_base64("$ARGV[0]");
exit 0;
もちろん、まずsaslpasswd2ユーザーのための提案はありますか?