ライン

ポイント:*

ライン

 はじめに

FreeBSD 11.0-Beta4

 年内にFreeBSD 9.x系がEOLになってしまうので、9月リリース予定の11.x系の予習を開始です。
たぶん、11.1-RELEASEまで待つような気がしますが、それを待つと更に1年後のような気もするし、悩みどころです。

 さて、まずは実機にベータ版を入れて確かめておきたく思います。

ISOファイルはKDDIの研究所サーバより取得しました。

 環境は、VMware 5.5系の仮想ゲスト。2コア、1GBのメモリと100GBのディスクで構成しました。
なんと、グローバルに配置してしまうつもりです。
インストールはいつもの通りで開始します。

 導入

OSの導入

 では、ISOファイルをローカルでマウントしてインストールを開始します。


メモリーがエコなので、UFSでいきます
ふかいことなしに、GPTにします
進みが早いので経過のキャプチャーが取り切れません。…まぁ、いつもの通りで進んでいます。
※とりあえず、前準備として、DNSに登録を済ませておきました※
説明は割愛しちゃいます
テストの環境は、グローバルとローカルのNICがそれぞれ1つづつ。
どっちがグローバル側になっているのか不明
ここでは、IPアドレスの設定を入れています。ホスト名さらしているので、出しちゃっても良いのですけど、
とりあえず、ここではキャプチャーはスキップしてます。
この後新しい画面来ました。
32から36はバグ??
 
 
 次も新しい画面かな。
 
こういうことができるんだねってことはわかるけど、いきなり悩むのも困るので、既存のままにします。
最後のSendmailサービスの無効化をすると、何が動作するのだろうか…。
後で眺めてみることにします。
 
 ここで最小限のユーザを準備していますが、キャプチャーは割愛。
 
これまでと少しだけ変わったというだけでした。
再起動時には、コンソールのメッセージでワーニングが出ていました。
リリースまでには修正されるんだろうなぁ…ということで、目抑止でそのままにしました。

 再起動後に、ログインしてからすぐにyahoo.comにpingしてみました。
問題なく返事が返ってきていたので、ちゃんとem0はグローバル側であっていたようです。

SSH接続でつながることを確認しました。

問題なしで、Tera Termでも接続できることを確認しました。

/etc/rc.confには以下が書かれています。

hostname="ns5.fkimura.com"
#keymap="jp.106.kbd"
keymap=jp
ifconfig_em0="inet (IPADDRESS} netmask (SUBNETMASK)"
defaultrouter="(IPADDRESS)"

sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"

先ほどに同様、dfでディスクを確認します。

# df
Filesystem 1K-blocks    Used    Avail Capacity  Mounted on
/dev/da0p2  97487516 1507492 88181024     2%    /
devfs              1       1        0   100%    /dev

 まぁ、この程度しか消費しないです。

 さて、今日のところはここで作業終了。shutdownして、続きは起動し直して再開とします。

 設定

pfやhosts.allowでセキュリティ

 まずは安全に通信できるようにpfのフィルタ制限を入れました。
次に、hosts.allowで接続元を制限。また、sshdの設定にも制限を加えています。
すでに、

Aug 11 20:20:46 ns5 sshd[1676]: error: PAM: authentication error for illegal user ubnt from host-85-201-161-123.dynamic.voo.be
Aug 11 20:20:49 ns5 sshd[1679]: error: PAM: authentication error for root from host-85-201-161-123.dynamic.voo.be
Aug 11 20:20:51 ns5 sshd[1682]: error: PAM: authentication error for root from host-85-201-161-123.dynamic.voo.be
Aug 11 20:20:54 ns5 sshd[1685]: error: PAM: authentication error for illegal user user from host-85-201-161-123.dynamic.voo.be
Aug 11 20:20:56 ns5 sshd[1688]: error: PAM: authentication error for illegal user user from host-85-201-161-123.dynamic.voo.be
Aug 11 20:20:58 ns5 sshd[1691]: error: PAM: authentication error for illegal user operator from host-85-201-161-123.dynamic.voo.be
Aug 11 20:21:01 ns5 sshd[1694]: error: PAM: authentication error for root from host-85-201-161-123.dynamic.voo.be
Aug 11 20:21:03 ns5 sshd[1697]: error: PAM: authentication error for illegal user support from host-85-201-161-123.dynamic.voo.be
Aug 11 20:21:06 ns5 sshd[1700]: error: PAM: authentication error for illegal user test from host-85-201-161-123.dynamic.voo.be

のようなアクセスが来ていました。

#grep "Invalid user" auth.log | awk '{print $8}' | sort | uniq
*****
Kashiwa
PlcmSpIp
Unknown
adm
admin
alex
apache
fax
ftp
ftpuser
git
guest
info
mysql
oracle
pi
postgres
support
test
test1
ubnt
user
vyatta
webmaster

こんなのを狙っているわけですね。"かしわ" ってなんだろう?
鍵認証だけに制限して、チャレンジレスポンス認証もとめたので、よりセキュアに。

メール系

 sendmailをまだ利用している状態なので、これをPostfixにしていくことにします。

#pkg install postfix
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 3 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        postfix: 3.1.1_2,1
        pcre: 8.39
        icu: 55.1,1

Number of packages to be installed: 3

The process will require 79 MiB more space.
17 MiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching postfix-3.1.1_2,1.txz: 100%    1 MiB   1.6MB/s    00:01
Fetching pcre-8.39.txz: 100%    1 MiB   1.1MB/s    00:01
Fetching icu-55.1,1.txz: 100%   14 MiB   1.2MB/s    00:13
Checking integrity... done (0 conflicting)
[1/3] Installing pcre-8.39...
[1/3] Extracting pcre-8.39: 100%
[2/3] Installing icu-55.1,1...
[2/3] Extracting icu-55.1,1: 100%
[3/3] Installing postfix-3.1.1_2,1...
===> Creating groups.
Using existing group 'mail'.
Creating group 'maildrop' with gid '126'.
Creating group 'postfix' with gid '125'.
===> Creating users
Creating user 'postfix' with uid '125'.
Adding user 'postfix' to group 'mail'.
[3/3] Extracting postfix-3.1.1_2,1: 100%
Would you like to activate Postfix in /usr/local/etc/mail/mailer.conf [n]? y
Activate Postfix in /usr/local/etc/mail/mailer.conf
Message from postfix-3.1.1_2,1:
To use postfix instead of sendmail:
  - clear sendmail queue and stop the sendmail daemons

Run the following commands to enable postfix during startup:
  - sysrc postfix_enable="YES"
  - sysrc sendmail_enable="NONE"

If postfix is *not* already activated in /usr/local/etc/mail/mailer.conf
  - mv /usr/local/etc/mail/mailer.conf /usr/local/etc/mail/mailer.conf.old
  - install -m 0644 /usr/local/share/postfix/mailer.conf.postfix /usr/local/etc/mail/mailer.conf

Disable sendmail(8) specific tasks,
add the following lines to /etc/periodic.conf(.local):
  daily_clean_hoststat_enable="NO"
  daily_status_mail_rejects_enable="NO"
  daily_status_include_submit_mailq="NO"
  daily_submit_queuerun="NO"

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).

If you are upgrading from prior postfix version, please see the README
files for recommended changes to your configuration and additional
http://www.postfix.org/COMPATIBILITY_README.html

/etc/periodic.conf.localを準備してみました。その他を進めます。

#service sendmail stop
Stopping sendmail.
Waiting for PIDS: 696.
sendmail_submit not running? (check /var/run/sendmail.pid).
Stopping sendmail_msp_queue.
Waiting for PIDS: 699.
#sysrc postfix_enable=YES
postfix_enable:  -> YES
#sysrc sendmail_enable=NONE
sendmail_enable: NO -> NONE

 ではサービスを開始してみます。

#/usr/local/etc/rc.d/postfix start
postfix/postfix-script: starting the Postfix mail system
#ps axu | grep postfix|grep -v grep
root    3198   0.0  3.7 65780 37332  -  Is   23:24      0:00.01 /usr/local/libexec/postfix/master -w
postfix 3199   0.0  3.7 67840 37340  -  I    23:24      0:00.01 pickup -l -t unix -u
postfix 3200   0.0  3.7 67892 37400  -  I    23:24      0:00.01 qmgr -l -t unix -

 続いて、postfixの再導入を行うことにしました。
これまでの流れとしまして、pkgでは加わっていない機能を有効にするために行うものです。
最初にpkgで入れたのは、一緒に入れるツールはpkgで入れてしまいたかったからでした。
まずは、postfixはpkgでは扱わないことにします。

#pkg lock postfix
postfix-3.1.1_2,1: lock this package? [y/N]: y
Locking postfix-3.1.1_2,1

 では開始です。

#cd /usr/ports/mail/postfix
#make config

 以下のように設定画面を表示させました。単純にmakeでも初回なので表示されますのでお好きなようにどうぞ。

 

 なんと、欲しい状態に既になっていることがわかりました。
ロックしましたけど、解除することにします。

#pkg unlock postfix
postfix-3.1.1_2,1: unlock this package? [y/N]: y
Unlocking postfix-3.1.1_2,1

 さて、このままだとsubmissionもsmtpsも利用できないままなので、修正を入れておきます。
以前は調べたりして設定の意味を調べていましたけど、今はなんとなく。必要と思う人は調べて決めて欲しいです。

#diff -urN master.cf.sample  master.cf
--- master.cf.sample    2016-08-10 00:14:33.000000000 +0900
+++ master.cf   2016-08-13 20:47:05.089284000 +0900
@@ -14,28 +14,28 @@
 #smtpd     pass  -       -       n       -       -       smtpd
 #dnsblog   unix  -       -       n       -       0       dnsblog
 #tlsproxy  unix  -       -       n       -       0       tlsproxy
-#submission inet n       -       n       -       -       smtpd
-#  -o syslog_name=postfix/submission
+submission inet n       -       n       -       -       smtpd
+  -o syslog_name=postfix/submission
 #  -o smtpd_tls_security_level=encrypt
-#  -o smtpd_sasl_auth_enable=yes
-#  -o smtpd_reject_unlisted_recipient=no
+  -o smtpd_sasl_auth_enable=yes
+  -o smtpd_reject_unlisted_recipient=no
 #  -o smtpd_client_restrictions=$mua_client_restrictions
 #  -o smtpd_helo_restrictions=$mua_helo_restrictions
 #  -o smtpd_sender_restrictions=$mua_sender_restrictions
-#  -o smtpd_recipient_restrictions=
-#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-#  -o milter_macro_daemon_name=ORIGINATING
-#smtps     inet  n       -       n       -       -       smtpd
-#  -o syslog_name=postfix/smtps
-#  -o smtpd_tls_wrappermode=yes
-#  -o smtpd_sasl_auth_enable=yes
-#  -o smtpd_reject_unlisted_recipient=no
+  -o smtpd_recipient_restrictions=
+  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
+  -o milter_macro_daemon_name=ORIGINATING
+smtps     inet  n       -       n       -       -       smtpd
+  -o syslog_name=postfix/smtps
+  -o smtpd_tls_wrappermode=yes
+  -o smtpd_sasl_auth_enable=yes
+  -o smtpd_reject_unlisted_recipient=no
 #  -o smtpd_client_restrictions=$mua_client_restrictions
 #  -o smtpd_helo_restrictions=$mua_helo_restrictions
 #  -o smtpd_sender_restrictions=$mua_sender_restrictions
-#  -o smtpd_recipient_restrictions=
-#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-#  -o milter_macro_daemon_name=ORIGINATING
+  -o smtpd_recipient_restrictions=
+  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
+  -o milter_macro_daemon_name=ORIGINATING
 #628       inet  n       -       n       -       -       qmqpd
 pickup    unix  n       -       n       60      1       pickup
 cleanup   unix  n       -       n       -       0       cleanup

 これでpostfixの再起動後は、

#netstat -a | grep LISTEN
tcp4       0      0 *.smtps                *.*                    LISTEN
tcp4       0      0 *.submission           *.*                    LISTEN
tcp4       0      0 *.smtp                 *.*                    LISTEN
tcp4       0      0 *.ssh                  *.*                    LISTEN
tcp6       0      0 *.ssh                  *.*                    LISTEN

 のようになっているはずです。もしろん、pfの設定で該当ポートを開けていないと外部との通信はできませんが。

 さて、Dovecotを利用したSASL認証を行うので、その設定をする前に、postfixのmain.cfの修正も準備しておきます。
まだリスタートはしません。作っておくだけです。
設定はここでも無責任モードで申し訳ありませんが。

#diff -urN main.cf.sample main.cf
--- main.cf.sample      2016-08-10 00:14:35.000000000 +0900
+++ main.cf     2016-08-14 00:00:27.671074000 +0900
@@ -93,6 +93,7 @@
 #
 #myhostname = host.domain.tld
 #myhostname = virtual.domain.tld
+myhostname = ns5.fkimura.com

 # The mydomain parameter specifies the local internet domain name.
 # The default is to use $myhostname minus the first component.
@@ -100,6 +101,7 @@
 # parameters.
 #
 #mydomain = domain.tld
+mydomain = kimura.xyz

 # SENDING MAIL
 #
@@ -180,6 +182,7 @@
 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
 #      mail.$mydomain, www.$mydomain, ftp.$mydomain
+mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain

 # REJECTING MAIL FOR UNKNOWN LOCAL USERS
 #
@@ -224,6 +227,9 @@
 #local_recipient_maps = proxy:unix:passwd.byname $alias_maps
 #local_recipient_maps =

+# added
+virtual_alias_maps = hash:/usr/local/etc/postfix/virtual
+
 # The unknown_local_recipient_reject_code specifies the SMTP server
 # response code when a recipient domain matches $mydestination or
 # ${proxy,inet}_interfaces, while $local_recipient_maps is non-empty
@@ -401,6 +407,7 @@
 #alias_maps = hash:/etc/aliases
 #alias_maps = hash:/etc/aliases, nis:mail.aliases
 #alias_maps = netinfo:/aliases
+alias_maps = hash:/etc/mail/aliases

 # The alias_database parameter specifies the alias database(s) that
 # are built with "newaliases" or "sendmail -bi".  This is a separate
@@ -410,6 +417,7 @@
 #alias_database = dbm:/etc/aliases
 #alias_database = hash:/etc/aliases
 #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
+alias_database = hash:/etc/mail/aliases

 # ADDRESS EXTENSIONS (e.g., user+foo)
 #
@@ -431,6 +439,7 @@
 #
 #home_mailbox = Mailbox
 #home_mailbox = Maildir/
+home_mailbox = Maildir/

 # The mail_spool_directory parameter specifies the directory where
 # UNIX-style mailboxes are kept. The default setting depends on the
@@ -541,6 +550,7 @@
 # For details, see "man header_checks".
 #
 #header_checks = regexp:$config_directory/header_checks
+header_checks = regexp:$config_directory/header_checks

 # FAST ETRN SERVICE
 #
@@ -675,3 +685,44 @@
 inet_protocols = ipv4
 meta_directory = /usr/local/libexec/postfix
 shlib_directory = /usr/local/lib/postfix
+
+### added
+smtp_use_tls=yes
+
+smtpd_tls_auth_only = no
+smtpd_tls_key_file = /etc/ssl/private/dovecot.pem
+smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem
+smtpd_tls_session_cache_database = btree:/var/db/postfix/smtpd_tls_scache
+smtpd_tls_loglevel = 1
+#20160814
+smtpd_tls_received_header = yes
+
+smtpd_sasl_auth_enable = yes
+smtpd_sasl_authenticated_header = yes
+smtpd_sasl_path = /var/spool/postfix/private/auth
+smtpd_sasl_security_options = noanonymous
+smtpd_sasl_type = dovecot
+smtpd_relay_restrictions =
+ permit_mynetworks,
+ permit_sasl_authenticated,
+ reject_unauth_destination
+
+message_size_limit = 10240000
+mailbox_size_limit = 51200000
+
+virtual_transport = lmtp:unix:private/dovecot-lmtp
+
+smtpd_helo_required = yes
+disable_vrfy_command = yes
+strict_rfc821_envelopes = yes
+allow_percent_hack = yes
+swap_bangpath = yes
+allow_untrusted_routing = no
+
+smtpd_client_restrictions =
+ permit_mynetworks,
+ reject_rbl_client all.rbl.jp,
+ reject_rbl_client bl.spamcop.net,
+ check_client_access hash:/usr/local/etc/postfix/reject_client,
+ reject_unknown_client,
+ permit

 ひとまず、postfixはここでそのままにして、Dovecot2の導入を開始します。
Postfixは、TCP Wrapperが使えなくて残念なんですが、Dovecotではコンパイル時に指定することで実装できます。
FreeBSDのports/pkgでは、デフォルト含まれていないので、ここはportsで入れる方針にします。

#cd /usr/ports/mail/dovecot2
#make config-recursive

 以下のように設定画面を表示させました。単純にmakeでも初回なので表示されますのでお好きなようにどうぞ。

 1つだけ加えました
 

 後はmakeします。

#make install clean
#sysrc dovecot_enable="YES"
#pkg lock dovecot2
#cp -R /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot

 dovecotで指定するhosts.allowの形は以下のような指定になります。

# Dovecot
pop3: 192.168.1.0/255.255.255.0,\
        .jp : allow
pop3: ALL : deny

pop3s: 192.168.1.0/255.255.255.0,\
        .jp : allow
pop3s: ALL : deny

imap:   192.168.1.0/255.255.255.0,\
        .jp : allow
imap: ALL : deny

imaps:  192.168.1.0/255.255.255.0,\
        .jp : allow
imaps: ALL : deny

 Dovecotの設定に戻ります。

#cd /usr/local/etc/dovecot/conf.d
#ll
total 112
-rw-r--r--  1 root  wheel   5296 Aug 13 22:16 10-auth.conf
-rw-r--r--  1 root  wheel   1893 Aug 13 22:16 10-director.conf
-rw-r--r--  1 root  wheel   2805 Aug 13 22:16 10-logging.conf
-rw-r--r--  1 root  wheel  15892 Aug 13 22:16 10-mail.conf
-rw-r--r--  1 root  wheel   3383 Aug 13 22:16 10-master.conf
-rw-r--r--  1 root  wheel   2261 Aug 13 22:16 10-ssl.conf
-rw-r--r--  1 root  wheel   1668 Aug 13 22:16 15-lda.conf
-rw-r--r--  1 root  wheel   2808 Aug 13 22:16 15-mailboxes.conf
-rw-r--r--  1 root  wheel   3295 Aug 13 22:16 20-imap.conf
-rw-r--r--  1 root  wheel    936 Aug 13 22:16 20-lmtp.conf
-rw-r--r--  1 root  wheel   4065 Aug 13 22:16 20-pop3.conf
-rw-r--r--  1 root  wheel    686 Aug 13 22:16 90-acl.conf
-rw-r--r--  1 root  wheel    292 Aug 13 22:16 90-plugin.conf
-rw-r--r--  1 root  wheel   2502 Aug 13 22:16 90-quota.conf
-rw-r--r--  1 root  wheel    499 Aug 13 22:16 auth-checkpassword.conf.ext
-rw-r--r--  1 root  wheel    499 Aug 13 22:16 auth-deny.conf.ext
-rw-r--r--  1 root  wheel    363 Aug 13 22:16 auth-dict.conf.ext
-rw-r--r--  1 root  wheel    944 Aug 13 22:16 auth-ldap.conf.ext
-rw-r--r--  1 root  wheel    571 Aug 13 22:16 auth-master.conf.ext
-rw-r--r--  1 root  wheel    535 Aug 13 22:16 auth-passwdfile.conf.ext
-rw-r--r--  1 root  wheel    808 Aug 13 22:16 auth-sql.conf.ext
-rw-r--r--  1 root  wheel    611 Aug 13 22:16 auth-static.conf.ext
-rw-r--r--  1 root  wheel   2185 Aug 13 22:16 auth-system.conf.ext
-rw-r--r--  1 root  wheel    330 Aug 13 22:16 auth-vpopmail.conf.ext

 デフォルトのままでいつもエラーになるのがSSL系。
まずは準備します。

#cd /etc/ssl
#mkdir private certs
#cd /usr/local/share/examples/dovecot/
#sh ./mkcert.sh
Generating a 1024 bit RSA private key
.++++++
...............................................................................................++++++
writing new private key to '/etc/ssl/private/dovecot.pem'
-----

subject= /OU=IMAP server/CN=imap.example.com/emailAddress=postmaster@example.com
SHA1 Fingerprint=...

 設定ファイル10-ssl.confでは、ssl = yesを有効にするためにコメントをはずします。

 次は、ログ系。10-logging.confに、以下2行を加えました。
必要と思われる方はどうぞ。ログローテートなども検討してみてください。

#log_path = syslog
log_path = /var/log/dovecot.log

# Log file to use for informational messages. Defaults to log_path.
#info_log_path =
info_log_path = /var/log/dovecot_info.log

 さて、Postfix関連の設定を加えていきます。
10-mail.confに設定を入れます。

mail_location = maildir:~/Maildir

 最後は、/usr/local/etc/dovecotにあるdovecot.confに記述を加えます。

#diff dovecot.conf_orig dovecot.conf
24c24
< #protocols = imap pop3 lmtp
---
> protocols = imap pop3 lmtp
51a52
> login_access_sockets = tcpwrap

 これにあわせて、10-master.confにtcpwrapとpostfix系設定を加えます。

#diff 10-master.conf_orig 10-master.conf
49c49
<   unix_listener lmtp {
---
>   ###unix_listener lmtp {
51c51
<   }
---
>   ###}
58a59,63
>   unix_listener /var/spool/postfix/private/dovecot-lmtp {
>     user  = postfix
>     group = postfix
>     mode  = 0666
>   }
96,98c101,103
<   #unix_listener /var/spool/postfix/private/auth {
<   #  mode = 0666
<   #}
---
>   unix_listener /var/spool/postfix/private/auth {
>     mode = 0666
>   }
119a125,133
>
> service tcpwrap {
>   unix_listener login/tcpwrap {
>     group = $default_login_user
>     mode = 0600
>     user = $default_login_user
>   }
> }
>

 サービスを起動します。

#service dovecot start
Starting dovecot.
#ps aux | grep dove|grep -v grep
root    85504   0.0  0.4 11472  3612  -  Is   23:04      0:00.00 /usr/local/sbin/dovecot -c /usr/local/etc/dovecot/dovecot.conf
dovecot 85505   0.0  0.3 11412  3320  -  I    23:04      0:00.00 dovecot/anvil
root    85506   0.0  0.3 11412  3400  -  I    23:04      0:00.00 dovecot/log
root    85508   0.0  0.4 11500  4308  -  I    23:04      0:00.01 dovecot/config
#touch /usr/local/etc/postfix/virtual
#postmap /usr/local/etc/postfix/virtual
#service postfix restart
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: starting the Postfix mail system

 SMTP認証で送信が行うことができることを確認するテストを完了しました。
受信も試しましたが問題なしです。(受信はPOP3S。送信はSMTPS(STARTTLS))
現時点で、バーチャルドメインのメールの受信に関しては後回しにしました。

VMware Tools

 最新のツールを入手して導入してみましたが、メモリー系のモジュールがマッチできなくてダメでした。
準備されるまで待ちとしました。

DNS

 結局、BIND9を入れるのですが、9.9系(EOLが来年末)にするか、9.10系(現バージョンは6ヶ月間)にするかを考えました。
FreeBSD 9系が9.9系。10系は自分で入れるのですが、そっちも9.9系にしていました。

 ここで評価するタイミングではなかったですが、一応9.10系にしてみることにしました。
pkgで良さそうです。

#pkg install bind910
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 4 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        bind910: 9.10.4P2
        libxml2: 2.9.3
        libedit: 3.1.20150325_2,1
        idnkit: 1.0_5

Number of packages to be installed: 4

The process will require 56 MiB more space.
7 MiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching bind910-9.10.4P2.txz: 100%    6 MiB   1.1MB/s    00:06
Fetching libxml2-2.9.3.txz: 100%  799 KiB 818.0kB/s    00:01
Fetching libedit-3.1.20150325_2,1.txz: 100%  123 KiB 126.0kB/s    00:01
Fetching idnkit-1.0_5.txz: 100%  194 KiB 198.8kB/s    00:01
Checking integrity... done (0 conflicting)
[1/4] Installing libxml2-2.9.3...
[1/4] Extracting libxml2-2.9.3: 100%
[2/4] Installing libedit-3.1.20150325_2,1...
[2/4] Extracting libedit-3.1.20150325_2,1: 100%
[3/4] Installing idnkit-1.0_5...
[3/4] Extracting idnkit-1.0_5: 100%
[4/4] Installing bind910-9.10.4P2...
[4/4] Extracting bind910-9.10.4P2: 100%
Message from idnkit-1.0_5:
===>   NOTICE:

The idnkit port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:

https://bugs.freebsd.org/bugzilla

More information about port maintainership is available at:

https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port
Message from bind910-9.10.4P2:
**********************************************************************
*            _  _____ _____ _____ _   _ _____ ___ ___  _   _         *
*           / \|_   _|_   _| ____| \ | |_   _|_ _/ _ \| \ | |        *
*          / _ \ | |   | | |  _| |  \| | | |  | | | | |  \| |        *
*         / ___ \| |   | | | |___| |\  | | |  | | |_| | |\  |        *
*        /_/   \_\_|   |_| |_____|_| \_| |_| |___\___/|_| \_|        *
*                                                                    *
*   BIND requires configuration of rndc, including a "secret" key.   *
*    The easiest, and most secure way to configure rndc is to run    *
*   'rndc-confgen -a' to generate the proper conf file, with a new   *
*            random key, and appropriate file permissions.           *
*                                                                    *
*     The /usr/local/etc/rc.d/named script will do that for you.     *
*                                                                    *
**********************************************************************

 /etc/rc.confには以下を追加。

# named(BIND9)
named_enable="YES"
named_flags="-4"
named_chroot_autoupdate="NO"
named_auto_forward="NO"
named_auto_forward_only="NO"

 サービスを起動してみます。

#service named start
wrote key file "/usr/local/etc/namedb/rndc.key"
Starting named.
#ps aux|grep named|grep -v grep
bind    984   0.1  2.1 42808 21512  -  Ss   12:34    0:00.07 /usr/local/sbin/named -4 -u bind -c /usr/local/etc/namedb/named.conf

 自分を引くように /etc/resolv.confに追加。

nameserver 0.0.0.0

 普通に動作開始しました。ゾーンファイルなどの設定はいつかで十分なので、まずはここまで。

SPAMとウィルス対策

 いつもの通りに、この辺りを導入設定。
milter系を容易に利用するためのツールを導入。

#pkg install milter-manager
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.

dovecot2-2.2.24 is locked and may not be modified
The following 14 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        milter-manager: 2.0.7
        gettext-runtime: 0.19.8.1
        indexinfo: 0.2.4
        ruby: 2.2.5,1
        libyaml: 0.1.6_2
        libffi: 3.2.1
        rubygem-glib2: 3.0.8
        rubygem-pkg-config: 1.1.7_1
        ruby22-gems: 2.6.4
        glib: 2.46.2_2
        python27: 2.7.12
        readline: 6.3.8
        libiconv: 1.14_9
        libev: 4.22,1

Number of packages to be installed: 14

The process will require 139 MiB more space.
24 MiB to be downloaded.

Proceed with this action? [y/N]: y
...

 まずは導入済。次は、clamav-milter。こやつはメモリーを結構喰うけど有能なので入れておきたいし。

#pkg install clamav-milter
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.

dovecot2-2.2.24 is locked and may not be modified
The following 9 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        clamav-milter: 0.99.2_1
        unzoo: 4.4_2
        arc: 5.21p
        libltdl: 2.4.6
        lha: 1.14i_6
        arj: 3.10.22_4
        curl: 7.50.1
        ca_root_nss: 3.26
        json-c: 0.12_2

Number of packages to be installed: 9

The process will require 23 MiB more space.
7 MiB to be downloaded.

Proceed with this action? [y/N]: y
...

 のように導入を完了。
この2つをまず動作させて確認してみます。
/etc/rc.confに設定を入れます。

# MILTER
# milter-manager
miltermanager_enable="YES"
miltermanager_uid="milter-manager"
miltermanager_gid="milter-manager"

# ClamAV
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
clamav_milter_enable="YES"
clamav_milter_socket_mode="660"
clamav_milter_socket_group="mail"
clamav_freshclam_flags="--daemon-notify=/usr/local/etc/clamd.conf --checks=12 --user=clamav"

 サービスを上げていきます…の前にアカウントを掘ってから実施。

# pw groupadd -n milter-manager -g 333
# pw useradd -n milter-manager -u 333 -g milter-manager -G mail -s /usr/sbin/nologin -d /var/run/milter-manager -c "milter manager"
# service milter-manager start

 起動します。

#/usr/local/etc/rc.d/milter-manager start
Starting miltermanager.

 問題なさそう。ClamAV系の設定ファイルを準備します。
※ここではこれまでと変更がないため設定内容は割愛します
サービスを起動します。

# service clamav-freshclam start
# service clamav-clamd start
# service clamav-milter start

 シスログに、"/usr/local/etc/rc.d/clamav-milter: WARNING: failed to start clamav_milter"のように出たかも知れません。
Postfixのmain.confにmilterの設定を加えます。

milter_protocol = 6
milter_default_action = accept
milter_mail_macros = {auth_author} {auth_type} {auth_authen}
smtpd_milters = unix:/var/run/milter-manager/milter-manager.sock
milter_command_timeout = 90s
milter_connect_timeout = 60s
milter_connect_macros = j {daemon_name} v {if_name} _

 Postfixのサービスも再起動してまずは完了。
メールに添付を付けて送信テストを実施。メールのヘッダには

X-Virus-Scanned: clamav-milter 0.99.2 at ns5.fkimura.comX-Virus-Status: Clean

 のようになっていることを確認。メールログ上も想定通りの記録が残りました。
 次は、milter-greylistを入れます。pkgで入れてからportsで入れ直し、lockする流れの導入にします。

#pkg install milter-greylist
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        milter-greylist: 4.4.3_6

Number of packages to be installed: 1

101 KiB to be downloaded.

Proceed with this action? [y/N]: y
...
#cd /usr/ports/mail/milter-greylist
#make config-recursive

 では再導入を行います。

 1つだけ加えました
 

 では、コンパイル開始です。
関連して導入されるものについては、あらかじめ突っ込んでから開始しています。

#pkg install gmake m4 help2man p5-Locale-gettext gettext libtool automake
#make reinstall clean
#pkg lock milter-greylist
milter-greylist-4.4.3_6: lock this package? [y/N]: y
Locking milter-greylist-4.4.3_6

 次に設定ファイルをサンプルより準備します。

#cd /usr/local/etc/mail
#ll
total 12
-rw-r--r--  1 root  wheel  5423 Aug 14 16:25 greylist.conf.sample
-rw-r--r--  1 root  wheel   212 Aug 11 23:10 mailer.conf
#cp -p  greylist.conf.sample  greylist.conf

 /etc/rc.confには以下を加えます。

# milter-greylist
miltergreylist_enable="YES"
miltergreylist_runas="mailnull:mail"

 これでサービス開始。

#/usr/local/etc/rc.d/milter-greylist start
Starting miltergreylist.

 開始できました。受信側を試すとエラー。いや、これはclamav側。

Aug 14 18:42:16 ns5 milter-manager[1360]:
 [3] [children][error][connection] [4] Failed to connect to unix:/var/run/clamav/clmilter.sock: No such file or directory: clamav-milter
Aug 14 18:42:16 ns5 milter-manager[1360]:
 [3] [leader][error] Failed to connect to unix:/var/run/clamav/clmilter.sock: No such file or directory

 見た感じでは問題ないように見えるのに?milter系とpostfixのサービスを再起動してから再度メールを出してみることにしました。

Aug 14 18:53:26 ns5 milter-manager[79400]:
 [1] [leader][error] Failed to connect to unix:/var/milter-greylist/milter-greylist.sock: Permission denied
Aug 14 18:53:31 ns5 milter-manager[79400]:
 [1] [children][error][connection] [2] Failed to connect to unix:/var/milter-greylist/milter-greylist.sock: Permission denied: milter-greylist

 おや、今度はこっち側がエラー。
そういえば、設定ファイルそのままだとダメだったんだ、と思い出しました。

#diff  greylist.conf.sample greylist.conf
9,10c9,12
< socket "/var/milter-greylist/milter-greylist.sock"
< dumpfile "/var/milter-greylist/greylist.db" 600
---
> #socket "/var/milter-greylist/milter-greylist.sock"
> #dumpfile "/var/milter-greylist/greylist.db" 600
> socket "/var/milter-greylist/milter-greylist.sock" 660
> dumpfile "/var/milter-greylist/greylist.db" 640
12c14,15
< user "mailnull:mailnull"
---
> #user "mailnull:mailnull"
> user "mailnull:mail"
15,16c18,19
< #stat ">>/var/milter-greylist/greylist.log" \
< #      "%T{%Y/%m/%d %T} %d [%i] %f -> %r %S (ACL %A) %Xc %Xe %Xm %Xh\n"
---
> stat ">>/var/milter-greylist/greylist.log" \
>       "%T{%Y/%m/%d %T} %d [%i] %f -> %r %S (ACL %A) %Xc %Xe %Xm %Xh\n"
32c35
< list "my network" addr { 127.0.0.1/8 10.0.0.0/8 192.0.2.0/24 }
---
> list "my network" addr { 127.0.0.1/8 59.106.64.0/25 }

 こんな感じに修正。パーミッションやオーナーの関係は以下のようにしました。

#chown mailnull:mail /var/milter-greylist/

 メールログを確認して、

Aug 14 19:18:36 ns5 milter-manager[79400]: [statistics] [milter][end][connect][stop][0.000511](8): milter-greylist

 のように動作はしていることを確認。
設定ファイルはそのうちにいろいろ加えていくことにして、ひとまずは。
 milter-greylist databasesって、結局どのタイミングで出力されるのか未確認のまま。
動作している他のサーバを見る限り、何かのタイミングで上書きで更新されるごときのファイルに見えるのだが。
少し、このままtouchなどをしないで様子見してみるつもりです。

 次はspamass-milterを入れます。

#pkg install spamass-milter
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01
Fetching packagesite.txz: 100%    6 MiB   1.2MB/s    00:05
Processing entries: 100%
FreeBSD repository update completed. 25558 packages processed.
Updating database digests format: 100%

dovecot2-2.2.24 is locked and may not be modified
The following 16 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        spamass-milter: 0.4.0_1
        spamassassin: 3.4.1_7
        p5-IO-Socket-SSL: 2.034
        p5-Net-SSLeay: 1.77
        p5-IO-Socket-IP: 0.37_1
        p5-Socket: 2.021
        p5-Mozilla-CA: 20160104
        p5-Net-DNS: 1.06_2,1
        p5-Digest-HMAC: 1.03_1
        p5-Encode-Detect: 1.01_1
        re2c: 0.14.3
        p5-HTML-Parser: 3.72
        p5-HTML-Tagset: 3.20_1
        p5-HTTP-Date: 6.02_1
        gnupg1: 1.4.20
        p5-NetAddr-IP: 4.078

Number of packages to be installed: 16

The process will require 12 MiB more space.
3 MiB to be downloaded.

Proceed with this action? [y/N]:y
...

 /etc/rc.confはこれまでの通りにしました。

# spamass_milter
spamd_enable="YES"
spamd_flags="-s /var/log/spamd.log -u spamd -H /var/spool/spam"
spamass_milter_enable="YES"
spamass_milter_user="spamd"
spamass_milter_group="spamd"
spamass_milter_socket="/var/run/spamass-milter/spamass-milter.sock"
spamass_milter_socket_owner="spamd"
spamass_milter_socket_group="mail"
spamass_milter_socket_mode="660"
spamass_milter_localflags="-u spamd -- -u spamd"

 必要なディレクトリを準備します。

# mkdir /var/run/spamass-milter/
# chown spamd:spamd /var/run/spamass-milter

 次に準備を続けます。

#sa-update
#cd /usr/local/etc/mail/spamassassin/
#fetch -o local.cf http://www.flcl.org/~yoh/user_prefs
local.cf                                      100% of  462 kB 1150 kBps 00m01s
#service sa-spamd start
Starting spamd.

 サービス関連の再起動を入れます。

#service spamass-milter start
Starting spamass_milter.
#service milter-manager stop
Stopping miltermanager.
Waiting for PIDS: 79400.
#service milter-manager start
Starting miltermanager.
#service postfix restart
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: starting the Postfix mail system

 テストでメールを外から入れてみました。メールログを確認します。

Aug 14 19:52:16 ns5 spamass-milter[79793]: 
Could not retrieve sendmail macro "i"!.  Please add it to confMILTER_MACROS_ENVFROM for better spamassassin results
..
Aug 14 19:52:16 ns5 milter-manager[79817]:
 [statistics] [milter][header][add](3): <X-Virus-Scanned>=<clamav-milter 0.99.2 at ns5.fkimura.com>: clamav-milter
Aug 14 19:52:16 ns5 milter-manager[79817]:
 [statistics] [milter][header][add](3): <X-Virus-Status>=<Clean>: clamav-milter
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [milter][header][add](4): <X-Spam-Status>=<No, score=2.3 required=13.0 tests=ARIN,CONTENT_TYPE_PRESENT,
      FREEMAIL_FROM,ONLY1HOPDIRECT,ONLY1HOPDIRECTARIN,QENCPTR1,QENCPTR2,
      RCVD_IN_MSPIKE_H2,UTF8 autolearn=no autolearn_force=no version=3.4.1>: spamass-milter
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [milter][header][add](4): <X-Spam-Level>=<**>: spamass-milter
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [milter][header][add](4): <X-Spam-Checker-Version>=<SpamAssassin 3.4.1
 (2015-04-28) on ns5.fkimura.com>: spamass-milter
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [session][header][add](1): <X-Virus-Scanned>=<clamav-milter 0.99.2 at ns5.fkimura.com>
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [session][header][add](1): <X-Virus-Status>=<Clean>
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [session][header][add](1): <X-Spam-Status>=<No, score=2.3 required=13.0 tests=ARIN,CONTENT_TYPE_PRESENT,
      FREEMAIL_FROM,ONLY1HOPDIRECT,ONLY1HOPDIRECTARIN,QENCPTR1,QENCPTR2,
      RCVD_IN_MSPIKE_H2,UTF8 autolearn=no autolearn_force=no version=3.4.1>
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [session][header][add](1): <X-Spam-Level>=<**>
Aug 14 19:52:19 ns5 milter-manager[79817]:
 [statistics] [session][header][add](1): <X-Spam-Checker-Version>=<SpamAssassin 3.4.1 (2015-04-28) on ns5.fkimura.com>

 動作はできているようです。
しばらくこの状態で試してみようと思っています。

この後は、Web系などの導入設定を確認したい予定。

 (この後はまだ準備中)

(準備中)

 。

#

 。


【改訂履歴】作成:2016/08/09 更新:2016/08/14

【リンク】

Copyright © 1996,1997-2006,2007- by F.Kimura,