バーチャルホストのメールサーバ③
(小言)OSを学ぼう ~xv6編~
ボクはIT技術の中で最も興味があることは、OSについてである。
OSと一口にっても、カーネルを指すのかその周りのライブラリやドライバを含めるのか、カーネルでもモノリシックなのかマイクロなのか、汎用なのかリアルタイムなのか、といろいろある。
どういったOSについて興味があるかというと、そのいずれもについてである。
OSの中でも実装しやすく、理解しやすい組み込みOSについて下記で学ばせて頂いた。
12ステップで作る 組込みOS自作入門
- 作者: 坂井弘亮
- 出版社/メーカー: カットシステム
- 発売日: 2010/05
- メディア: 単行本
- 購入: 24人 クリック: 252回
- この商品を含むブログ (39件) を見る
非常にわかりやすく、OSを動作させるのに必要なハードウェアについての知識も細かく書いてあり、納得がいくまで学ぶことができた。この本で学んでる時は、めちゃエキサイトしていた覚えがある。
ボクはこの本を読みながら、自分で自分なりのソースコードを書き、bootloaderも他の汎用的なものを利用させていただき動作させる、というような方法で学習した。
github.com
興味がある方は、ぜひぜひ一緒に遊びながら作りましょう、教えれることはな~んもないけども。
組込みOSを学んだ次は、汎用OSである。
xv6はwikipediaから抜粋すると、
つまり、現在の大多数のUnix(Linuxは含まない)の原始となるUnix第6版を現代のCPUアーキテクチャ用に書き換えたものである。 また、Unix第6版はpre K&Rと呼ばれる、ANSI Cとは全然違う仕様のC言語で書かれていたのだが、これがANSI Cで書きなおされている。これがMITの凄さか…
下記に詳細がある。
https://pdos.csail.mit.edu/6.828/2014/xv6.html
基本的に英語の文書しかないので、ハードルは上がるのだが、それでも読みたい内容盛りだくさんのはずだ。
現在下記の自分のサーバでhtml形式の文書を作成中。
xv6 book-rev8
このテキストブックもMITライセンス(のはず)なので、公開してみようかと思う。
まだ不完全な状態なので、もう少し綺麗に整形したりしていくようにしたい。
前回からの続き
tokixy56.hatenablog.com
tokixy56.hatenablog.com
バーチャルホスト用メールユーザの作成
ユーザ作成
$ sudo useradd -a mailuser
$ sudo passwd mailuser
メール受信用ディレクトリ作成
$ cd /var/spool/ $ sudo mkdir vmailbox $ sudo chown mailuser:mailuser ./vmailbox $ sudo chmod 775 ./vmailbox
Dovecotの設定
/etc/dovecot/dovecot.conf
!include conf.d/*.conf !include_try local.conf
/etc/dovecot/local.conf
dovecot.confに直接書かないための設定ファイル
auth_debug_passwords = yes auth_verbose = no auth_debug = yes listen = * disable_plaintext_auth = no auth_mechanisms = PLAIN LOGIN CRAM-MD5 # %u - username # %n - user part in user@domain, same as %u if there's no domain # %d - domain part in user@domain, empty if there's no domain # %h - home directory mail_location = maildir:/var/spool/vmailbox/%d/%u:INBOX=/var/spool/vmailbox/%d/%u first_valid_uid = 10000 first_valid_gid = 10000 protocols = imap pop3 protocol imap { imap_client_workarounds = delay-newmail tb-extra-mailbox-sep } protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 } }
/etc/dovecot/conf.d/10-master.conf
service auth { ... unix_listener auth-userdb { #mode = 0666 #user = #group = } # Postfix smtp-auth #unix_listener /var/spool/postfix/private/auth { # mode = 0666 #} unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } # Auth process is run as this user. #user = $default_internal_user }
そして確か、
$ sudo chmod 700 /var/spool/postfix/private $ sudo chmod 666 /var/spool/postfix/private/* $ sudo chown -R postfix:root /var/spool/postfix/private
が必要だったはず…。
/etc/dovecot/conf.d/10-auth.conf
認証設定ファイルの指定
!include auth-sql.conf.ext
/etc/dovecot/conf.d/auth-sql.conf.ext
dovecotのデータベースへのクエリ設定ファイルの指定
passdb { driver = sql # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext }
/etc/dovecot/dovecot-sql.conf.ext
dovecotのデータベースへのクエリ設定
# for postfixadmin connect = host=localhost dbname=postfix user=postfix password=パスワード driver = mysql # Default password scheme. # depends on your $CONF['encrypt'] setting: # md5crypt -> MD5-CRYPT # md5 -> PLAIN-MD5 # cleartext -> PLAIN default_pass_scheme = MD5-CRYPT password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1' user_query = SELECT CONCAT('/var/spool/vmailbox/', maildir) AS mail, 10000 AS uid, 10000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
/etc/dovecot/conf.d/10-ssl.conf
SSL設定
ssl = yes # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf #ssl_cert = </etc/pki/dovecot/certs/dovecot.pem #ssl_key = </etc/pki/dovecot/private/dovecot.pem ssl_cert = </etc/postfix/mail.crt ssl_key = </etc/postfix/mail.key
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
httpdの設定 (2016-07-21 追加)
あまり詳細に書かず、今回の設定に必要だと思われるれる最低限のみ記載する。
/etc/httpd/conf/httpd.conf
User apache Group apache ServerAdmin username@localhost #【CentOS6,5の場合】バーチャルホスト対応 #ServerName ドメイン:80 ← コメントアウト NameVirtualHost *:80 #【CentOS7の場合】 ServerName ドメイン:80 # Further relax access to the default document root: <Directory "/var/www/html"> Options Indexes ExecCGI FollowSymLinks AllowOverride all Order deny,allow Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.html index.php index.cgi index.py index.rb index.pl </IfModule> AddHandler cgi-script .cgi .pl .rb .py .php AddDefaultCharset UTF-8
バーチャルホスト対応
/etc/httpd/conf.d/virtualhost-00.conf
<VirtualHost *:80> ServerName any <Location /> Require all denied </Location> </VirtualHost>
以下は、バーチャルドメイン毎に追加。
/etc/httpd/conf.d/virtualhost-www.hogehoge.com.conf
<VirtualHost *:80> ServerName www.hogehoge.com DocumentRoot /var/www/html/hogehoge </VirtualHost>
/etc/httpd/conf.d/virtualhost-mail.fugafuga.com.conf
<VirtualHost *:80> ServerName mail.fugafuga.com DocumentRoot /var/www/html/fugafuga ErrorLog logs/virtual-error_log CustomLog logs/virtual-access_log combined env=!no_log </VirtualHost>
次回
httpdとPostfixAdminの設定ファイルを書く。
また、今回参照させて頂いた各ページの紹介をしておきたい。
というかそっちのページの方が説明等あってわかりやすいかもしれない。
httpdに関しては他に沢山資料があってそっちの方がわかりやすいと思うけども、とりあえず書いておこう。
設定ファイルにやたらDBへのクエリ設定書いてあるけど全然理解してませーん。