統計データの数理モデルへの適用について少し調べてみた。
昨今を鑑みても、コンピュータのディスクの大容量化にともない、大量のデータをどのように分析するかが課題であることは言うまでもない。そこで重要になるのは数理統計を用いた大量データの分析である。
まずは身近な題材のものから確認して理解を深めていくことにした。
さしあたり、下記の2点から確認検証していこうと思う
- 項目反応理論(項目応答理論)
- べイズ統計学(ベイズ確立・ベイズ推定)
統計データの数理モデルへの適用について少し調べてみた。
昨今を鑑みても、コンピュータのディスクの大容量化にともない、大量のデータをどのように分析するかが課題であることは言うまでもない。そこで重要になるのは数理統計を用いた大量データの分析である。
まずは身近な題材のものから確認して理解を深めていくことにした。
さしあたり、下記の2点から確認検証していこうと思う
シンクイット(Think IT)の第1回 SDNへの潮流とOpenFlowの歴史と第2回 OpenFlowのアーキテクチャと仕様・機能を参照(読む)
この流れが実現されると通信機器のベンダーごとに微妙に異なる設定や通信機器の種類(スイッチ(L2〜L5)・ルーター(専用機)・ファイアウォール(専用機))の垣根がなくなる。利用者にとって複数機器を導入しなくて済むが、業者にとっては競争の激化と技術者の確保が命題になってくる。
インストールしたいプログラムがRPMでなくtarボールのみで配布されていることも多い。しかし、ソースファイルをそのままコンパイルしてインストールするとRPMによる恩恵(インストール済みプログラムおよび更新の検知)が得られないので、プログラムはできるだけRPMファイルでインストールしたい。
tarボールで配布されているプログラムの中には、RPMファイルを作成するためのSPECファイルを含んでいるものがある。この場合は、rpmbuildコマンドでtarボールからRPMファイルを作成することができます。( -taオプションをつけて実行する)
しかし、SPECファイルが含まれていない場合はどうしたら良いか?
CheckInstallを使うことで、SPECファイルが用意されていなくてもRPMファイルを作成できます。
Postfixの作者、Wietse Venema氏のPGP公開鍵を入手します。 入手した公開鍵は、次のようにインポートします: [hoge@hoge Source]$ gpg --import wietse.pgp gpg: /home/shorisawa/.gnupg/trustdb.gpg: 信用データベースができました gpg: 鍵C12BCD99: 公開鍵“Wietse Venema”を読み込みました gpg: 鍵D5327CB9: 公開鍵“wietse venema ”を読み込みました gpg: 処理数の合計: 2 gpg: 読込み: 2 (RSA: 2) gpg: 絶対的に信用する鍵が見つかりません ■ [hoge@hoge Source]$ gpg postfix-2.10-20120202.tar.gz.sig gpg: 2012年02月03日 09時58分34秒 JSTにRSA鍵ID C12BCD99で施された署名 gpg: “Wietse Venema ”からの正しい署名 ←←←この行があればOK gpg: 警告: この鍵は信用できる署名で証明されていません! gpg: この署名が所有者のものかどうかの検証手段がありません。 主鍵の指紋: FF 96 4A 8C 96 88 7C 6E A4 EF AD BF 48 34 E1 BB [hoge@hoge Source]
CheckInstallのWebサイトからからパッケージをダウンロードしてインストールする。今回は、checkinstall-1.6.1-1.i386.rpmをダウンロードしてインストールする。
[root@hoge rpm]# ls checkinstall-1.6.1-1.i386.rpm [root@hoge rpm]# rpm -ivh checkinstall-1.6.1-1.i386.rpm 準備中... ########################################### [100%] 1:checkinstall ########################################### [100%] [root@hoge rpm]#
パッケージの最新版がRPMはないのにdebがある事が多々ある。特にCENTOSのパッケージについては、かなり古いものが多く、最新版をインストールしたい時は、パッケージからでなくソースからになってしまう場合ある。ソースからインストールされたソフトはパッケージ管理されないので、最新版等の更新チェックや他ソフトの依存管理も面倒になってします。
そこで、方法としてはSRPMやdebパッケージからバイナリRPMを作成してインストールする方法かソースからRPMを作成する方法とに限定されてします。
ここでは、debパッケージからRPMパッケージを作成(変換)する方法について書き留めておきます。
変換するにはalienコマンドを利用するが、alienコマンドはyumからのインストールできないので、ソースコードを入手しビルドします。
[root@hoge Source]# wget http://ftp.debian.org/debian/pool/main/a/alien/alien_8.81.tar.gz --2012-02-08 15:02:58-- http://ftp.debian.org/debian/pool/main/a/alien/alien_8.81.tar.gz ftp.debian.org をDNSに問いあわせています... 130.89.148.12, 2001:610:1908:b000::148:12 ftp.debian.org|130.89.148.12|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 63918 (62K) [application/x-gzip] `alien_8.81.tar.gz' に保存中 100%[======================================>] 63,918 53.5K/s 時間 1.2s 2012-02-08 15:02:59 (53.5 KB/s) - `alien_8.81.tar.gz' へ保存完了 [63918/63918]
[root@ora02 Source]# rpmbuild -ta alien_8.81.tar.gz実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.29269 + umask 022 + cd /usr/src/redhat/BUILD + LANG=C + export LANG + unset DISPLAY + cd /usr/src/redhat/BUILD + rm -rf alien + /bin/gzip -dc /home/shorisawa/Desktop/DownLoad/Source/alien_8.81.tar.gz + tar -xvvf - drwxr-xr-x 0/0 0 2010-05-18 09:57:16 alien/ -rwxr-xr-x 0/0 923 2009-11-21 07:32:47 alien/Makefile.PL drwxr-xr-x 0/0 0 2010-05-18 09:57:56 alien/debian/ -rw-r--r-- 0/0 746 2010-05-18 09:57:52 alien/debian/control -rw-r--r-- 0/0 19 2009-05-29 23:58:47 alien/debian/docs -rwxr-xr-x 0/0 519 2009-10-20 05:34:17 alien/debian/rules -rw-r--r-- 0/0 93524 2010-05-18 09:57:00 alien/debian/changelog -rw-r--r-- 0/0 1302 2009-05-29 23:58:47 alien/debian/copyright -rw-r--r-- 0/0 2 2009-05-29 23:58:47 alien/debian/compat -rw-r--r-- 0/0 917 2009-05-29 23:58:47 alien/alien.spec.in -rw-r--r-- 0/0 2719 2009-05-29 23:58:47 alien/README -rw-r--r-- 0/0 897 2010-05-18 09:57:16 alien/alien.spec drwxr-xr-x 0/0 0 2010-04-29 00:29:14 alien/Alien/ -rw-r--r-- 0/0 10556 2010-04-29 00:29:14 alien/Alien/Package.pm drwxr-xr-x 0/0 0 2010-05-18 09:57:04 alien/Alien/Package/ -rw-r--r-- 0/0 7487 2009-10-20 05:34:17 alien/Alien/Package/Slp.pm -rw-r--r-- 0/0 4735 2009-10-20 05:34:17 alien/Alien/Package/Tgz.pm -rw-r--r-- 0/0 16306 2010-05-18 09:54:12 alien/Alien/Package/Rpm.pm -rw-r--r-- 0/0 17298 2010-04-29 00:27:17 alien/Alien/Package/Deb.pm -rw-r--r-- 0/0 2244 2009-05-29 23:58:47 alien/Alien/Package/Lsb.pm -rw-r--r-- 0/0 7221 2009-10-20 05:34:17 alien/Alien/Package/Pkg.pm -rw-r--r-- 0/0 739 2005-07-14 02:37:34 alien/gendiff.txt -rwxr-xr-x 0/0 16379 2009-12-15 03:42:56 alien/alien.pl -rw-r--r-- 0/0 17976 2005-07-14 02:37:34 alien/GPL -rw-r--r-- 0/0 448 2005-07-14 02:37:34 alien/TODO -rw-r--r-- 0/0 283 2005-07-14 02:37:34 alien/INSTALL -rw-r--r-- 0/0 576 2010-05-18 09:57:16 alien/alien.lsm -rw-r--r-- 0/0 586 2005-07-14 02:37:34 alien/alien.lsm.in + STATUS=0 + '[' 0 -ne 0 ']' + cd alien ++ /usr/bin/id -u + '[' 0 = 0 ']' + /bin/chown -Rhf root . ++ /usr/bin/id -u + '[' 0 = 0 ']' + /bin/chgrp -Rhf root . + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + rm -rf /tmp/alien-8.81.build + exit 0 実行中(%install): /bin/sh -e /var/tmp/rpm-tmp.53925 + umask 022 + cd /usr/src/redhat/BUILD + cd alien + LANG=C + export LANG + unset DISPLAY + perl Makefile.PL PREFIX=/tmp/alien-8.81.build/usr Writing Makefile for Alien + make cp Alien/Package/Deb.pm blib/lib/Alien/Package/Deb.pm cp Alien/Package/Tgz.pm blib/lib/Alien/Package/Tgz.pm cp Alien/Package.pm blib/lib/Alien/Package.pm cp Alien/Package/Rpm.pm blib/lib/Alien/Package/Rpm.pm cp Alien/Package/Pkg.pm blib/lib/Alien/Package/Pkg.pm cp Alien/Package/Lsb.pm blib/lib/Alien/Package/Lsb.pm cp Alien/Package/Slp.pm blib/lib/Alien/Package/Slp.pm perl -pe '$_="" if /use lib/; $_="our \$Version=\"8.81\";\n" if /VERSION_AUTOREPLACE/' alien.pl > alien cp alien blib/script/alien /usr/bin/perl "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/alien Manifying blib/man1/alien.1 Manifying blib/man3/Alien::Package::Tgz.3pm Manifying blib/man3/Alien::Package::Deb.3pm Manifying blib/man3/Alien::Package::Rpm.3pm Manifying blib/man3/Alien::Package.3pm Manifying blib/man3/Alien::Package::Pkg.3pm Manifying blib/man3/Alien::Package::Lsb.3pm Manifying blib/man3/Alien::Package::Slp.3pm perl -i -pe "s/\@version\@/8.81/g"alien.lsm perl -i -pe "s/\@version\@/8.81/g" alien.spec + make pure_install VARPREFIX=/tmp/alien-8.81.build Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package.pm Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Deb.pm Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Slp.pm Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Rpm.pm Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Lsb.pm Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Pkg.pm Installing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/Alien/Package/Tgz.pm Installing /tmp/alien-8.81.build/usr/share/man/man1/alien.1 Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Deb.3pm Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Rpm.3pm Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Pkg.3pm Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Tgz.3pm Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Slp.3pm Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package.3pm Installing /tmp/alien-8.81.build/usr/share/man/man3/Alien::Package::Lsb.3pm Installing /tmp/alien-8.81.build/usr/bin/alien Writing /tmp/alien-8.81.build/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Alien/.packlist install -d /tmp/alien-8.81.build/usr/share/alien/patches \ /tmp/alien-8.81.build/var/lib/alien + find /tmp/alien-8.81.build -not -type d -printf '/%P\n' + sed '/\/man\//s/$/\*/' + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip /usr/bin/strip + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/brp-python-bytecompile + /usr/lib/rpm/redhat/brp-java-repack-jars ファイルの処理中: alien-8.81-1 実行中(%doc): /bin/sh -e /var/tmp/rpm-tmp.74313 + umask 022 + cd /usr/src/redhat/BUILD + cd alien + DOCDIR=/tmp/alien-8.81.build/usr/share/doc/alien-8.81 + export DOCDIR + rm -rf /tmp/alien-8.81.build/usr/share/doc/alien-8.81 + /bin/mkdir -p /tmp/alien-8.81.build/usr/share/doc/alien-8.81 + cp -pr debian/changelog GPL README alien.lsm /tmp/alien-8.81.build/usr/share/doc/alien-8.81 + exit 0 Provides: perl(Alien::Package) perl(Alien::Package::Deb) perl(Alien::Package::Lsb) perl(Alien::Package::Pkg) perl(Alien::Package::Rpm) perl(Alien::Package::Slp) perl(Alien::Package::Tgz) Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: /usr/bin/perl perl perl(Alien::Package::Deb) perl(Alien::Package::Lsb) perl(Alien::Package::Pkg) perl(Alien::Package::Rpm) perl(Alien::Package::Slp) perl(Alien::Package::Tgz) perl(Cwd) perl(Getopt::Long) perl(base) perl(constant) perl(strict) perl(vars) 伸張ファイルの検査中: /usr/lib/rpm/check-files /tmp/alien-8.81.build 書き込み完了: /usr/src/redhat/SRPMS/alien-8.81-1.src.rpm 書き込み完了: /usr/src/redhat/RPMS/noarch/alien-8.81-1.noarch.rpm [root@hoge Source]# ls /usr/src/redhat/RPMS/noarch alien-8.81-1.noarch.rpm [root@hoge Source]#
[root@hoge Source]# rpm -ivh /usr/src/redhat/RPMS/noarch/alien-8.81-1.noarch.rpm 準備中... ########################################### [100%] 1:alien ########################################### [100%] [root@hoge Source]#
# alien --to-rpm --scripts *.deb xxx.rpm generated ...
LDAPを設定する機会にあわせて、dovecot-2.0.17-1をインストールする。いつもは、POP3をインストールするが、昨今の Thin client化の波やオフィスや出先の(別の端末からメール確認)を考えてIMAPである dovecot-2.0.16-1をインストールすることにした。パッケージのインストールには、unixlife.repo にお世話になりました。
dovecotの概要
Dovecotは、デフォルトでPOP3とIMAPが動作するように設定されていますが、Courie-IMAPと同様にPOP3sとIMAPsもサポートされています。
今回は、dovecotをIMAP4とPOP3をクライアントが選択できるように設定します。
# 2.0.16: /etc/dovecot/dovecot.conf # OS: Linux 2.6.18-274.18.1.el5xen i686 CentOS release 5.7 (Final) auth_anonymous_username = anonymous auth_cache_negative_ttl = 1 hours auth_cache_size = 0 auth_cache_ttl = 1 hours auth_debug = no auth_debug_passwords = no auth_default_realm = auth_failure_delay = 2 secs auth_first_valid_uid = 500 auth_gssapi_hostname = auth_krb5_keytab = auth_last_valid_uid = 0 auth_master_user_separator = auth_mechanisms = plain auth_realms = auth_socket_path = auth-userdb auth_ssl_require_client_cert = no auth_ssl_username_from_cert = no auth_use_winbind = no auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ auth_username_format = auth_username_translation = auth_verbose = no auth_verbose_passwords = no auth_winbind_helper_path = /usr/bin/ntlm_auth auth_worker_max_count = 30 base_dir = /var/run/dovecot config_cache_size = 1 M debug_log_path = default_client_limit = 1000 default_idle_kill = 60 default_internal_user = dovecot default_login_user = dovenull default_process_limit = 100 default_vsz_limit = 256 M deliver_log_format = msgid=%m: %$ dict_db_config = director_doveadm_port = 0 director_mail_servers = director_servers = director_user_expire = 15 mins disable_plaintext_auth = yes dotlock_use_excl = yes< doveadm_allowed_commands = doveadm_password = doveadm_proxy_port = 0 doveadm_socket_path = doveadm-server doveadm_worker_count = 0 first_valid_gid = 1 first_valid_uid = 500 hostname = imap_capability = imap_client_workarounds = imap_id_log = imap_id_send = imap_idle_notify_interval = 2 mins imap_logout_format = bytes=%i/%o imap_max_line_length = 64 k import_environment = TZ info_log_path = last_valid_gid = 0 last_valid_uid = 0 lda_mailbox_autocreate = no lda_mailbox_autosubscribe = no lda_original_recipient_header = libexec_dir = /usr/libexec/dovecot listen = *, :: lmtp_proxy = no lmtp_save_to_detail_mailbox = no lock_method = fcntl log_path = syslog log_timestamp = "%b %d %H:%M:%S " login_access_sockets = login_greeting = Dovecot ready. login_log_format = %$: %s login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c login_trusted_networks = mail_access_groups = mail_attachment_dir = mail_attachment_fs = sis posix mail_attachment_hash = %{sha1} mail_attachment_min_size = 128 k mail_cache_fields = flags mail_cache_min_mail_count = 0 mail_chroot = mail_debug = no mail_fsync = optimized mail_full_filesystem_access = no mail_gid = mail_home = mail_location = mail_log_prefix = "%s(%u): " mail_max_keyword_length = 50 mail_max_lock_timeout = 0 mail_max_userip_connections = 10 mail_never_cache_fields = imap.envelope mail_nfs_index = no mail_nfs_storage = no mail_plugin_dir = /usr/lib/dovecot mail_plugins = mail_privileged_group = mail_save_crlf = no mail_temp_dir = /tmp mail_uid = mailbox_idle_check_interval = 30 secs mailbox_list_index_disable = no maildir_copy_with_hardlinks = yes maildir_stat_dirs = no maildir_very_dirty_syncs = no managesieve_client_workarounds = managesieve_implementation_string = Dovecot Pigeonhole managesieve_logout_format = bytes=%i/%o managesieve_max_compile_errors = 5 managesieve_max_line_length = 65536 managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave master_user_separator = mbox_dirty_syncs = yes mbox_dotlock_change_timeout = 2 mins mbox_lazy_writes = yes mbox_lock_timeout = 5 mins mbox_min_index_size = 0 mbox_read_locks = fcntl mbox_very_dirty_syncs = no mbox_write_locks = fcntl mdbox_preallocate_space = no mdbox_rotate_interval = 0 mdbox_rotate_size = 2 M mmap_disable = no passdb { args = deny = no driver = pam master = no pass = no } plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve } pop3_client_workarounds = pop3_enable_last = no pop3_fast_size_lookups = no pop3_lock_session = no pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s pop3_no_flag_updates = no pop3_reuse_xuidl = no pop3_save_uidl = no pop3_uidl_format = %08Xu%08Xv postmaster_address = protocols = imap pop3 lmtp quota_full_tempfail = no recipient_delimiter = + rejection_reason = Your message to <%t> was automatically rejected:%n%r rejection_subject = Rejected: %s sendmail_path = /usr/sbin/sendmail service anvil { chroot = empty client_limit = 0 drop_priv_before_exec = no executable = anvil extra_groups = group = idle_kill = 4294967295 secs privileged_group = process_limit = 1 process_min_avail = 1 protocol = service_count = 0 type = anvil unix_listener anvil-auth-penalty { group = mode = 0600 user = } unix_listener anvil { group = mode = 0600 user = } user = $default_internal_user vsz_limit = 18446744073709551615 B } service auth-worker { chroot = client_limit = 1 drop_priv_before_exec = no executable = auth -w extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 1 type = unix_listener auth-worker { group = mode = 0600 user = $default_internal_user } user = vsz_limit = 18446744073709551615 B } service auth { chroot = client_limit = 4096 drop_priv_before_exec = no executable = auth extra_groups = group = idle_kill = 0 privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = unix_listener auth-client { group = mode = 0600 user = } unix_listener auth-login { group = mode = 0600 user = $default_internal_user } unix_listener auth-master { group = mode = 0600 user = } unix_listener auth-userdb { group = mode = 0600 user = } unix_listener login/login { group = mode = 0666 user = } user = $default_internal_user vsz_limit = 18446744073709551615 B } service config { chroot = client_limit = 0 drop_priv_before_exec = no executable = config extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = config unix_listener config { group = mode = 0600 user = } user = vsz_limit = 18446744073709551615 B } service dict { chroot = client_limit = 1 drop_priv_before_exec = no executable = dict extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = unix_listener dict { group = mode = 0600 user = } user = $default_internal_user vsz_limit = 18446744073709551615 B } service director { chroot = client_limit = 0 drop_priv_before_exec = no executable = director extra_groups = fifo_listener login/proxy-notify { group = mode = 00 user = } group = idle_kill = 4294967295 secs inet_listener { address = port = 0 ssl = no } privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = unix_listener director-admin { group = mode = 0600 user = } unix_listener director-userdb { group = mode = 0600 user = } unix_listener login/director { group = mode = 00 user = } user = $default_internal_user vsz_limit = 18446744073709551615 B } service dns_client { chroot = client_limit = 1 drop_priv_before_exec = no executable = dns-client extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = unix_listener dns-client { group = mode = 0666 user = } unix_listener login/dns-client { group = mode = 0666 user = } user = $default_internal_user vsz_limit = 18446744073709551615 B } service doveadm { chroot = client_limit = 1 drop_priv_before_exec = no executable = doveadm-server extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 1 type = unix_listener doveadm-server { group = mode = 0600 user = } user = vsz_limit = 18446744073709551615 B } service imap-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = imap-login extra_groups = group = idle_kill = 0 inet_listener imap { address = port = 143 ssl = no } inet_listener imaps { address = port = 993 ssl = yes } privileged_group = process_limit = 0 process_min_avail = 0 protocol = imap service_count = 1 type = login user = $default_login_user vsz_limit = 18446744073709551615 B } service imap { chroot = client_limit = 1 drop_priv_before_exec = no executable = imap extra_groups = group = idle_kill = 0 privileged_group = process_limit = 1024 process_min_avail = 0 protocol = imap service_count = 1 type = unix_listener login/imap { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service ipc { chroot = empty client_limit = 0 drop_priv_before_exec = no executable = ipc extra_groups = group = idle_kill = 0 privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = unix_listener ipc { group = mode = 0600 user = } unix_listener login/ipc-proxy { group = mode = 0600 user = $default_login_user } user = $default_internal_user vsz_limit = 18446744073709551615 B } service lmtp { chroot = client_limit = 1 drop_priv_before_exec = no executable = lmtp extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = lmtp service_count = 0 type = unix_listener lmtp { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service log { chroot = client_limit = 0 drop_priv_before_exec = no executable = log extra_groups = group = idle_kill = 0 privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = log user = vsz_limit = 18446744073709551615 B } service managesieve-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = managesieve-login extra_groups = group = idle_kill = 0 inet_listener sieve { address = port = 4190 ssl = no } privileged_group = process_limit = 0 process_min_avail = 0 protocol = sieve service_count = 1 type = login user = $default_login_user vsz_limit = 64 M } service managesieve { chroot = client_limit = 1 drop_priv_before_exec = no executable = managesieve extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = sieve service_count = 1 type = unix_listener login/sieve { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service pop3-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = pop3-login extra_groups = group = idle_kill = 0 inet_listener pop3 { address = port = 110 ssl = no } inet_listener pop3s { address = port = 995 ssl = yes } privileged_group = process_limit = 0 process_min_avail = 0 protocol = pop3 service_count = 1 type = login user = $default_login_user vsz_limit = 18446744073709551615 B } service pop3 { chroot = client_limit = 1 drop_priv_before_exec = no executable = pop3 extra_groups = group = idle_kill = 0 privileged_group = process_limit = 1024 process_min_avail = 0 protocol = pop3 service_count = 1 type = unix_listener login/pop3 { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service ssl-params { chroot = client_limit = 0 drop_priv_before_exec = no executable = ssl-params extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = startup unix_listener login/ssl-params { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } shutdown_clients = yes ssl = yes ssl_ca = ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_cert_username_field = commonName ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL ssl_key = </etc/pki/dovecot/private/dovecot.pem ssl_key_password = ssl_parameters_regenerate = 168 ssl_verify_client_cert = no submission_host = syslog_facility = mail userdb { args = driver = passwd } valid_chroot_dirs = verbose_auth = no verbose_proctitle = no verbose_ssl = no version_ignore = no設定内容もほぼ標準で問題ないようだ。
■dovecotの設定内容の確認
設定方法については、「OSSでLinuxサーバ構築」さんや「Stray Penguin」さんを参照させて頂いております。「OSSでLinuxサーバ構築」さん「Stray Penguin」さんありがとうございます。
[root@ora02 ~]# yum install postfix Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: rsync.atworks.co.jp * extras: rsync.atworks.co.jp * rpmforge: fr2.rpmfind.net * updates: rsync.atworks.co.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package postfix.i386 2:2.3.3-2.3.el5_6 set to be updated --> Processing Dependency: cyrus-sasl >= 2.1.10 for package: postfix --> Running transaction check ---> Package cyrus-sasl.i386 0:2.1.22-5.el5_4.3 set to be updated --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: postfix i386 2:2.3.3-2.3.el5_6 base 3.5 M Installing for dependencies: cyrus-sasl i386 2.1.22-5.el5_4.3 base 1.2 M Transaction Summary ================================================================================ Install 2 Package(s) Upgrade 0 Package(s) Total download size: 4.7 M Is this ok [y/N]: y Downloading Packages: (1/2): cyrus-sasl-2.1.22-5.el5_4.3.i386.rpm | 1.2 MB 00:00 (2/2): postfix-2.3.3-2.3.el5_6.i386.rpm | 3.5 MB 00:00 -------------------------------------------------------------------------------- Total 4.4 MB/s | 4.7 MB 00:01 Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : cyrus-sasl 1/2 Installing : postfix 2/2 Installed: postfix.i386 2:2.3.3-2.3.el5_6 Dependency Installed: cyrus-sasl.i386 0:2.1.22-5.el5_4.3 Complete! [root@ora02 ~]#
【postfixユーザー】 postfix:x:89:89::/var/spool/postfix:/sbin/nologin 【postfixグループ】 postdrop:x:90: postfix:x:89:
正規表現によるメールフィルタリングの制御に PCRE があると高度なフィルタリングが可能。
デフォルトでインストールされていると思いますが、コンパイルオプションでunicode-propertiesが有効になっていないということあるかもしれないので、確認をする。
[root@ora02 ~]# pcretest -C PCRE version 6.6 06-Feb-2006 Compiled with UTF-8 support Unicode properties support ← これでOK! NGの時 → No Unicode properties support Newline character is LF Internal link size = 2 POSIX malloc threshold = 10 Default match limit = 10000000 Default recursion depth limit = 10000000 Match recursion uses stack [root@ora02 ~]#
■ main.cfの編集・設定ファイル/etc/postfix/main.cfの編集
# vi /etc/postfix/main.cf # ホスト名 myhostname = mail.oss-d.net # ドメイン名 mydomain = oss-d.net # @以降のドメイン名 myorigin = $mydomain # メールを受け取るネットワークインタフェースのアドレス範囲 inet_interfaces = all # メールの最終目的地とみなす範囲の指定 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 信頼できるクライアントのネットワーク mynetworks = 192.168.11.0/24, 127.0.0.0/8 # リレーを許可するドメインを指定 relay_domains = $mydestination # メールBOXの形式 home_mailbox = Maildir/
■ main.cfの編集・設定ファイル /etc/postfix/main.cf を編集(設定を追記する)
# SASLによるSMTP認証を使用 smtpd_sasl_auth_enable = yes # 使用可能な認証メカニズムの設定 # noanonymous : 匿名接続を拒否。 # noplaintext : PLAIN認証を拒否(Outlook ExpressはPLAIN認証のみ対応) #smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_security_options = noanonymous # 認証時のTLSの利用(TLSを強制する場合はyesに変更) #smtpd_tls_auth_only = yes #ローカル認証 realm を設定 smtpd_sasl_local_domain = $myhostname #メールの送信可能なユーザ定義 # mynetworks sasl認証された は許可。それ以外は拒否 smtpd_recipient_restrictions = permit_mynetworks permit_auth_destination permit_sasl_authenticated reject # Outlook LOGIN 認証を利用するための設定 broken_sasl_auth_clients = yes
■ SASLの設定1. 「/usr/lib/sasl2/smtpd.conf」を下記の通り設定します。
pwcheck_method: saslauthd mech_list: login plain2. 「/etc/sysconfig/saslauthd」を下記の通り設定します。ユーザ情報はPAM経由でUNIXアカウントを利用します。
MECH=pam3. SASLの自動起動設定
# chkconfig saslauthd on4. SASLの起動
# /etc/init.d/saslauthd start または # service saslauthd start
■ SASLの設定1. 「/usr/lib/sasl2/smtpd.conf」を下記の通り設定します。
# vi /usr/lib/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: login plain2. 「/etc/sysconfig/saslauthd」を下記の通り設定します。
# vi /etc/sysconfig/saslauthd MECH=ldap3. SASLがLDAPのユーザ情報を使用するよう「/etc/saslauthd.conf」を作成する。
# vi /etc/saslauthd.conf ldap_servers: ldap://localhost ldap_search_base: ou=Users,dc=hoge,dc=com ldap_filter: uid=%u4. SASLの自動起動設定
# chkconfig saslauthd on5. SASLの起動
# /etc/init.d/saslauthd restart-------------------------
■ 秘密鍵と証明書の作成秘密鍵「localhost.key」と証明書「localhost.crt」を作成します。
中途半端な記述になってしまいましたが、後日追記します...
I am not feeling well now. Although I caught cold yesterday, I recovered somehow. However, my physical condition is not good still today.
I will strive for recovery of my body today.