CONTENTS


Lastmodified 2023-10-17 (火) 15:31:56


SMTP認証

【参考URL】FreeBSD 12 で自宅サーバ作成 メールサーバ編
【参考URL】Postfixのセキュリティ対策
【参考URL】FreeBSD、Apacheでサーバを構築して公開する

cyrus-saslのインストール

SMTP認証にsasl認証を使用する。

# portinstall security/cyrus-sasl2
# portinstall security/cyrus-sasl2-saslauthd

cyrus-sasl2 インストール時に、オプションで OTP を外してないと、

postfix/smtpd[27109]: OTP unavailable because can't read/write key database /etc/opiekeys: Permission denied

と言うログが残ります。 Postfix logging some OTP related permission denied messages

Updated user `cyrus'.

You can use sasldb2 for authentication, to add users use:

       saslpasswd2 -c username

If you want to enable SMTP AUTH with the system Sendmail, read
Sendmail.README

NOTE: This port has been compiled with a default pwcheck_method of
     auxprop.  If you want to authenticate your user by /etc/passwd,
     PAM or LDAP, install ports/security/cyrus-sasl2-saslauthd and
     set sasl_pwcheck_method to saslauthd after installing the
     Cyrus-IMAPd 2.X port.  You should also check the
     /usr/local/lib/sasl2/*.conf files for the correct
     pwcheck_method.
     If you want to use GSSAPI mechanism, install
     ports/security/cyrus-sasl2-gssapi.
     If you want to use SRP mechanism, install
     ports/security/cyrus-sasl2-srp.
     If you want to use LDAP auxprop plugin, install
     ports/security/cyrus-sasl2-ldapdb.

cyrus-sasl2-saslauthd

====> Compressing man pages (compress-man)
===> Staging rc.d startup script(s)
===>  Installing for cyrus-sasl-saslauthd-2.1.28
===>  Checking if cyrus-sasl-saslauthd is already installed
===>   Registering installation for cyrus-sasl-saslauthd-2.1.28
Installing cyrus-sasl-saslauthd-2.1.28...
To run saslauthd from startup, add saslauthd_enable="YES" in your
/etc/rc.conf.

===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/saslauthd  

     If there are vulnerabilities in these programs there may be a security
     risk to the system. FreeBSD makes no guarantee about the security of
     ports included in the Ports Collection. Please type 'make deinstall'
     to deinstall the port if this is a concern.

     For more information, and contact details about the security
     status of this software, see the following webpage:
https://www.cyrusimap.org/sasl/
===>  Cleaning for heimdal-7.8.0_6
===>  Cleaning for cyrus-sasl-2.1.28
===>  Cleaning for cyrus-sasl-saslauthd-2.1.28

/etc/rc.conf

saslauthd_enable="YES"
saslauthd_flags="-a sasldb"

saslauthd起動

/usr/local/etc/rc.d/saslauthd start

SMTP AUTH設定

/usr/local/lib/sasl2/smtpd.conf

pwcheck_method: auxprop

元記事はこうなっているが、現状、/usr/local/lib/sasl2/Sendmail.conf というファイルがあって、中身は

pwcheck_method: auxprop

となってて、同じ内様。両方設置しておくことにした。

SMTP AUTHユーザー追加

# saslpasswd2 -c -u Host_name user_name
Password:
Again (for verification):
sasldblistusers2
user_name@hobbit.ddo.jp: userPassword

この操作で /usr/local/etc/sasldb2.db が生成されるが、Host_name は、# postconf -h myhostname の値を用いると、エラーせず認証されるようである。

/usr/local/etc/sasldb2.db所有権変更

/>chown cyrus:mail /usr/local/etc/sasldb2.db
/>chmod 640 /usr/local/etc/sasldb2.db

Postfix

BDB BLACKLISTD と SASL にチェック追加

Postfix_show_config.PNG
# portupgrade -rf --batch postfix

【付記】BDBオプションを追加した場合、Postfixの最初のnewaliasesコマンドでDBの作成時に

# newaliases
BDB0210 /etc/mail/aliases.db: metadata page checksum error
BDB1581 File handles still open at environment close
BDB1582 Open file handle: /etc/mail/aliases.db
BDB1582 Open file handle: /etc/mail/aliases.db
BDB1582 Open file handle: /etc/mail/aliases.db
BDB1582 Open file handle: /etc/mail/aliases.db
         :          :         :
BDB1582 Open file handle: /etc/mail/aliases.db
BDB0210 /usr/local/mailman/data/aliases.db: metadata page checksum error
BDB1581 File handles still open at environment close
BDB1582 Open file handle: /usr/local/mailman/data/aliases.db
BDB1582 Open file handle: /usr/local/mailman/data/aliases.db
BDB1582 Open file handle: /usr/local/mailman/data/aliases.db
           :           :           :
BDB1582 Open file handle: /usr/local/mailman/data/aliases.db
BDB1582 Open file handle: /usr/local/mailman/data/aliases.db
BDB1582 Open file handle: /usr/local/mailman/data/aliases.db
#

のような出力があった。postfix reload して再度 newaliases したら、すぐにプロンプトが戻って来た。 多分、正常な動作だったのだろうけど、ちと焦った。(^_^;

main.cf 設定

myhostname = mail.smb.net   # コメント解除でホスト名指定
mydomain = smb.net          # コメント解除でドメイン名指定
myorigin = $myhostname      # コメント解除(送信元メール)
inet_interfaces = all       # コメント解除(受信するネットワークアドレスを指定)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  # コメント解除(ローカル配送先)
mynetworks = 192.168.1.0/24, 127.0.0.0/8 # リレーを許可するIPアドレス
relay_domains = $mydestination  # コメント解除(リレーを許可するドメインを指定)
alias_maps = hash:/etc/aliases  # コメント解除(エイリアスを設定)
alias_database = hash:/etc/aliases # コメント解除(エイリアスを設定)
 
# Cyrus-SASL configuration  # 下記を追加(SASLによるSMTP認証を使用)
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes

起動

# service saslauthd start
Starting saslauthd.

# service postfix start
postfix/postfix-script: starting the Postfix mail system

SMTP-AUTH の確認

【参考URL】Postfix で SMTP-AUTH を実現 SMTP-AUTH が正常に動作しているかを確認します。 具体的には Telnet で 25 番ポートにアクセスして確認します。

$ telnet localhost 25 <-- 入力し、エンター
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.miloweb.net ESMTP Postfix
EHLO localhost <-- EHLO localhostと入力
250-zdnet.hoge.org
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH SCRAM-SHA-512 SCRAM-SHA-384 SCRAM-SHA-256 SCRAM-SHA-224 SCRAM-SHA-1 DIGEST-MD5 CRAM-MD5 NTLM LOGIN PLAIN
250-AUTH=SCRAM-SHA-512 SCRAM-SHA-384 SCRAM-SHA-256 SCRAM-SHA-224 SCRAM-SHA-1 DIGEST-MD5 CRAM-MD5 NTLM LOGIN PLAIN <-- この行があればオッケーです
250 8BITMIME
QUIT <-- 確認できたので、QUITコマンドで切断します

もし「 250-AUTH PLAIN LOGIN 」と表示されていれば、SMTP-AUTH が上手く行っていないので、 Postfix のインストール手順を見直して、やり直さなければならない。

更に確認を進める

http://linux.kororo.jp/cont/server/smtp_auth.php

# printf 'ユーザー名\0ユーザー名\0パスワード' | mmencode

で得られるBase64を用いてAUTH PLAIN (平文認証)認証出来るか確認する。
予め main.cf で

#smtp_sasl_security_options = noplaintext 

とコメントアウトしておく。

$ telnet localhost 25 <-- 入力し、エンター
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.miloweb.net ESMTP Postfix
EHLO localhost <-- EHLO localhostと入力
250-zdnet.hoge.org
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH SCRAM-SHA-512 SCRAM-SHA-384 SCRAM-SHA-256 SCRAM-SHA-224 SCRAM-SHA-1 DIGEST-MD5 CRAM-MD5 NTLM LOGIN PLAIN
250-AUTH=SCRAM-SHA-512 SCRAM-SHA-384 SCRAM-SHA-256 SCRAM-SHA-224 SCRAM-SHA-1 DIGEST-MD5 CRAM-MD5 NTLM LOGIN PLAIN <-- この行があればオッケーです
250 8BITMIME
AUTH PLAIN a29yb3JvAGtvcm9ybwBrb3JvMTgxNQ==   <-- # printf 'ユーザー名\0ユーザー名\0パスワード' | mmencode の結果を入力
235 Authentication successful
QUIT
221 Bye
Connection closed by foreign host.

/var/log/all.log

postfix/smtpd[66015]: E4D824E6061: client=gw.kuji-clinic.net[210.255.122.209], sasl_method=CRAM-MD5, sasl_username=hoge@FQDN

Total access 616:本日 1:昨日 1

Counter: 616, today: 1, yesterday: 1

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS