CONTENTS
Lastmodified 2023-10-17 (火) 15:31:56
【参考URL】FreeBSD 12 で自宅サーバ作成 メールサーバ編
【参考URL】Postfixのセキュリティ対策
【参考URL】FreeBSD、Apacheでサーバを構築して公開する
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
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.
====> 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
saslauthd_enable="YES" saslauthd_flags="-a sasldb"
/usr/local/etc/rc.d/saslauthd start
/usr/local/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
元記事はこうなっているが、現状、/usr/local/lib/sasl2/Sendmail.conf というファイルがあって、中身は
pwcheck_method: auxprop
となってて、同じ内様。両方設置しておくことにした。
# 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 の値を用いると、エラーせず認証されるようである。
/>chown cyrus:mail /usr/local/etc/sasldb2.db />chmod 640 /usr/local/etc/sasldb2.db
BDB BLACKLISTD と SASL にチェック追加
# portupgrade -rf --batch postfix
If you are using SASL, you need to make sure that postfix has access to read the sasldb file. This is accomplished by adding postfix to group mail and making the /usr/local/etc/sasldb* file(s) readable by group mail (this should be the default for new installs). ===> SECURITY REPORT: This port has installed the following binaries which execute with increased privileges. /usr/local/sbin/postlog 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/lib/postfix/libpostfix-util.so 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.postfix.org/
【付記】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 したら、すぐにプロンプトが戻って来た。 多分、正常な動作だったのだろうけど、ちと焦った。(^_^;
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
【参考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.
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