ソフトウェアとハードウェアの境界

ホビー開発に関する誰得情報満載☆

バーチャルホストのメールサーバ⑤

終結 メールサーバ構築編

この5日間、非常に充実したブログライフを過ごせた。
それも、Google先生という先人たちのおかげである。
今回のメールサーバ設定で参照させて頂いた各ページを紹介しておきたい。

実際にはもっと参考にさせていただいたページがあったと思うけど、まぁとりあえずこれくらいで…。
後はPostfix詳解の本とかも見たけど、それはまたの機会に…。

前回からの続き

tokixy56.hatenablog.com
tokixy56.hatenablog.com
tokixy56.hatenablog.com
tokixy56.hatenablog.com

Webメールの設定

Rainloop

Rainloop本家: www.rainloop.net
Community Editionのダウンロードはこちら
Community EditionはAGPL v3らしいので、自由に使える。

Rainloopインストール

インストール作業は非常に簡単だ。

Rainloopダウンロード、配置、ファイルアクセス権の設定
$ mkdir rainloop
$ cd rainloop
$ wget http://repository.rainloop.net/v2/webmail/rainloop-community-latest.zip
$ unzip rainloop-community-latest.zip
$ cd ../
$ sudo mv rainloop /var/www/html
$ cd /var/www/html/rainloop
$ sudo chown -R apache:apache *
$ sudo find . -type d -exec chmod 755 {} \;
$ sudo find . -type f -exec chmod 644 {} \;

上記の作業が完了したら、http://ドメイン/rainloop/にアクセスすればもう表示されるはず。

Rainloopログイン画面

f:id:tokixy56:20160722113707p:plain
ただし、この状態だとまだ何も設定されていないので、まずは下記の管理者画面にログインして、初期設定をする必要がある。
http://ドメイン/rainloop/?admin

Rainloop管理者画面 http://ドメイン/rainloop/?admin

f:id:tokixy56:20160722114129p:plain
赤で囲ってあるところの表示が変わって、管理者画面であることが確認できる。

デフォルトでは管理者のログイン情報は、
アカウント: admin
パスワード: 12345
となっているので、ログイン後すぐに変更するようにしよう。

Rainloop パスワード変更画面

f:id:tokixy56:20160722121058p:plain

Rainloop デフォルトドメイン変更画面

パスワード変更後、デフォルトドメインを変更 f:id:tokixy56:20160722121422p:plain

Rainloop データベース設定画面

MySQL(MariaDB)にデータ(ユーザ情報)を保存するように設定。
f:id:tokixy56:20160722121622p:plain
面倒だったのでMariaDBのユーザ情報をrootのままにした…。
本当はRainloop用のユーザ作って設定した方が良いでしょう。

Rainloop ドメイン追加

最後にアクセスするドメインの設定をする。
RainloopはSquirrelMailの様に、Maildirを直接見に行くわけではない。
普通のメーラと同じように、メールサーバにアクセスしてメールを取得してくるものだ。
その設定をこのドメイン追加で実施する。
f:id:tokixy56:20160722122559p:plain
デフォルトではgmail.comが有効になっているので、これは外しておいた方が良いだろう。

これで設定完了だ。

後はPostfixAdminでドメインを追加し、ユーザを作成して、Rainloopのログイン画面からアクセスすればメールの送受信が可能になる…はず!!

メールサーバ構築編 あとがき

時間を掛けて、これほどまでのドキュメントを作成できたのも、理解ある会社、上司のおかげである。
実に素晴らしい会社だ。
給料はあまり高くないものの、もう一度言おう、給料はあまり高くないものの、技術者として胸高鳴ることができるので、もう感謝感謝である。
今後も精進したいと思う。

バーチャルホストのメールサーバ④

(枕話)哲学入門

まずはこれを見て欲しい。

史上最強の哲学入門 (河出文庫)

史上最強の哲学入門 (河出文庫)


先日この本を入手した。
また積んである状態だが、読む本リスト・エントリーNo.2で控えている。
現在は西洋哲学史 下巻を読んでいる最中である。

史上最強の哲学入門の作者、飲茶氏は言う。

今までの哲学入門書には何が足りなかったのか。
そう、「バキ」成分である。

ボクは激しく同意した。
すべての学問は哲学が源流である。
つまりすべての学問には「範馬」の名に相当するような、最強の血が流れているわけである。
彼らは数々の猛者との論争たたかいを繰り広げ、より最強の真実を、より最強の正しさを求めて続けた。
ソクラテス然り、
プラトン然り、
デカルト然り、
カント然り、
フッサール然り、
ハイデガー然り、
ジャック・ハンマー然りである。
累々たる理論に対して、破壊、混沌、分類、再構築、ドーピングを繰り返し、現代でも正しさや、生き方についての疑問を投じる手段として使用される。

もちろんそれは我々のような武器を持たざるもの拳や戦闘技術が安易に手を出せるものではないのだが、史上最強の哲学入門は、初めて持つ武器、となってくれることであろう。

この世には、地上最強の腕力、史上最強の哲学、そしてもう一つの最強がある。
電子上最強のOS(無理矢理過ぎて哀愁)。
現存する正式なUNIXにはデニス・リッチー(Dennis MacAlistair Ritchie)の血が流れている。
いずれボクも、彼から正式な血を引く息子(のような気持ちでいる者)として、「電子上最強のOS入門」とかいう本を書けたら良いなと思う。

前回からの続き

tokixy56.hatenablog.com
tokixy56.hatenablog.com
tokixy56.hatenablog.com

PostfixAdminの設定

PostfixAdminの入手

本家サイト: Postfix Admin - Web based administration interface

PostfixAdminソフトは下記からダウンロード可能。
ダイレクトリンク

PostfixAdmin入手、解凍、移動
$ wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.93/postfixadmin-2.93.tar.gz
$ tar xzvf postfixadmin-2.92.tar.gz
$ sudo mv postfixadmin-2.93 /var/www/html/postfixadmin
/var/www/html/postfixadmin/config.local.php

移動したディレクトリ内に、新規にこのファイルを作成する。

<?php
$CONF['configured'] = true;
//setup.phpで作成された文字列を設定する。
$CONF['setup_password'] = 'ハッシュ値';
$CONF['default_language'] = 'ja';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'パスワード';
$CONF['database_name'] = 'postfix';
$CONF['admin_email'] = 'メールアドレス';
$CONF['alias_domain'] = 'YES';
$CONF['dovecotpw'] = "/usr/bin/doveadm pw";
$CONF['show_password'] = 'YES';
$CONF['show_footer_text'] = 'NO';
$CONF['emailcheck_resolve_domain']='NO';
$CONF['create_mailbox_subdirs_prefix']='';
$CONF['new_quota_table'] = 'YES';
$CONF['quota'] = 'YES';
$CONF['used_quotas'] = 'YES';
$CONF['new_quota_table'] = 'YES';
$CONF['aliases'] = '100';
$CONF['maxquota'] = '0';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'YES';
$CONF['encrypt'] = 'md5crypt';
$CONF['user_footer_link'] = "http://ドメイン/postfixAdmin/users/main.php";
$CONF['mailbox_postcreation_script'] = 'sudo /var/www/html/postfixadmin/postfixadmin-mailbox-postcreation.sh';
$CONF['mailbox_postdeletion_script']='sudo /var/www/html/postfixadmin/postfixadmin-mailbox-postdeletion.sh';
$CONF['domain_postdeletion_script']='sudo /var/www/html/postfixadmin/postfixadmin-domain-postdeletion.sh';
?>

上記が設定し終わったら、http://ドメイン/postfixadmin/setup.phpへアクセスする。
このページを表示すると、何が足りないとかメッセージが出る。
必要なモジュールのインストールや、MariaDBへのデータベースの作成など、エラーが無くなるまで実施する。

PostfixAdmin setup.php画面

f:id:tokixy56:20160721114953p:plain

"Setup Password"にパスワードを入力して「管理者追加」ボタン押す。

簡単過ぎるパスワードを入れると、

Your password must contain at least 3 character(s).

とか

Your password must contain at least 2 digit(s).

とか表示されるので、違うパスワードを入力する。

適切なパスワードを入力していると下記のような表示が出力される。

PostfixAdmin ハッシュ値出力

f:id:tokixy56:20160721115031p:plain
ここに表示されているハッシュ値config.local.php'ハッシュ値'の部分にコピーする。

ハッシュ値記載後、"Setup Password"には上記で使用したパスワードを入力し、"管理者"、"パスワード"、"パスワード(確認)"のすべての項目を入力し、「管理者追加」ボタン押すと、下記のように管理者作成が完了した旨が表示される。

PostfixAdmin 管理者作成完了

f:id:tokixy56:20160721120337p:plain

設定が終わったらsetup.phpはリネームするなどして、実行できないようにしよう。

上記作業が終わったら、次はhttp://ドメイン/postfixadmin/login.phpへアクセスする。

PostfixAdmin ログイン画面

f:id:tokixy56:20160721121446p:plain
ここで先ほど追加した管理者情報を入力すればログインすることができる。
だが、まだこの時点では正常に動作しないので注意

PostfixAdminディレクトリ内
$ cd /var/www/html/postfixadmin
$ sudo cp ./ADDTIONS/postfixadmin-domain-postdeletion.sh .
$ sudo cp ./ADDTIONS/postfixadmin-mailbox-postcreation.sh .
$ sudo cp ./ADDTIONS/postfixadmin-mailbox-postdeletion.sh .

$ sudo chmod 755 postfixadmin-domain-postdeletion.sh
$ sudo chmod 755 postfixadmin-mailbox-postcreation.sh
$ sudo chmod 755 postfixadmin-mailbox-postdeletion.sh

$ sudo chown apache:apache ./template_c
/etc/sudoers

上記でコピーしたスクリプトに管理者権限での実行権限を与える。

apache ALL=(ALL) NOPASSWD: /var/www/html/postfixadmin/postfixadmin-mailbox-postcreation.sh
apache ALL=(ALL) NOPASSWD: /var/www/html/postfixadmin/postfixadmin-mailbox-postdeletion.sh
apache ALL=(ALL) NOPASSWD: /var/www/html/postfixadmin/postfixadmin-domain-postdeletion.sh
/var/www/html/postfixadmin/postfixadmin-domain-postdeletion.sh
# Change this to where you keep your virtual mail users' maildirs.
basedir=/var/spool/vmailbox

# Change this to where you would like deleted maildirs to reside.
trashbase=/var/spool/vmailbox/.deleted-maildirs

if [ `echo $1 | fgrep '..'` ]; then
    echo "First argument contained a double-dot sequence; bailing out."
    exit 1
fi

if [ ! -e "$trashbase" ]; then
    echo "trashbase '$trashbase' does not exist; bailing out."
    exit 1
fi

trashdir="${trashbase}/`date +%F_%T`_$1"
domaindir="${basedir}/$1"

if [ ! -e "$domaindir" ]; then
    echo "Directory '$domaindir' does not exits; nothing to do."
    exit 0;
fi
if [ ! -d "$domaindir" ]; then
    echo "'$domaindir' is not a directory; bailing out."
    exit 1
fi
if [ -e "$trashdir" ]; then
    echo "Directory '$trashdir' already exits; bailing out."
    exit 1;
fi

mv $domaindir $trashdir

exit $?
/var/www/html/postfixadmin/postfixadmin-mailbox-postcreation.sh
# Change this to where you keep your virtual mail users' maildirs.
basedir=/var/spool/vmailbox

if [ ! -e "$basedir" ]; then
    echo "$0: basedir '$basedir' does not exist; bailing out."
    exit 1
fi

if [ `echo $3 | fgrep '..'` ]; then
    echo "$0: An argument contained a double-dot sequence; bailing out."
    exit 1
fi

maildir="${basedir}/$3"
parent=`dirname "$maildir"`
if [ ! -d "$parent" ]; then
    if [ -e "$parent" ]; then
        echo "$0: strange - directory '$parent' exists, but is not a directory; bailing out."
        exit 1
    else
        mkdir -p "${parent}"
        if [ $? -ne 0 ]; then
            echo "$0: mkdir -p '$parent' returned non-zero; bailing out."
            exit 1
        fi
    fi
fi

if [ -e "$maildir" ]; then
    echo "$0: Directory '$maildir' already exists! bailing out"
    exit 1
fi

#maildirmake "$maildir"
#if [ ! -d "$maildir" ]; then
#    echo "$0: maildirmake didn't produce a directory; bailing out."
#    exit 1
#fi

# 以下を追記(maildirmakeの代わり) --->
mkdir "$maildir"
if [ ! -d "$maildir" ]; then
    echo "$0: mkdir didn't produce a directory; bailing out."
    exit 1
fi

mkdir "${maildir}cur"
if [ ! -d "${maildir}cur" ]; then
    echo "$0: mkdir didn't produce a directory; bailing out."
    exit 1
fi

mkdir "${maildir}new"
if [ ! -d "${maildir}new" ]; then
    echo "$0: mkdir didn't produce a directory; bailing out."
    exit 1
fi

mkdir "${maildir}tmp"
if [ ! -d "${maildir}tmp" ]; then
    echo "$0: mkdir didn't produce a directory; bailing out."
    exit 1
fi

chown -R mailuser:mailuser "$maildir"
chmod -R 700 "$maildir"
#<---

exit 0
/var/www/html/postfixadmin/postfixadmin-mailbox-postdeletion.sh
# Change this to where you keep your virtual mail users' maildirs.
basedir=/var/spool/vmailbox

# Change this to where you would like deleted maildirs to reside.
trashbase=/var/spool/vmailbox/.deleted-maildirs

if [ ! -e "$trashbase" ]; then
    echo "trashbase '$trashbase' does not exist; bailing out."
    exit 1
fi

if [ `echo $1 | fgrep '..'` ]; then
    echo "First argument contained a double-dot sequence; bailing out."
    exit 1
fi
if [ `echo $2 | fgrep '..'` ]; then
    echo "First argument contained a double-dot sequence; bailing out."
    exit 1
fi

#subdir=`echo "$1" | sed 's/@.*//'`
subdir=$1

maildir="${basedir}/$2/${subdir}"
trashdir="${trashbase}/$2/`date +%F_%T`_${subdir}"
#maildir="${basedir}/${subdir}"
#trashdir="${trashbase}/`date +%F_%T`_${subdir}"

parent=`dirname "$trashdir"`
if [ ! -d "$parent" ]; then
    if [ -e "$parent" ]; then
        echo "Strainge - directory '$parent' exists, but is not a directory."
        echo "Bailing out."
        exit 1
    else
        mkdir -p "$parent"
        if [ $? -ne 0 ]; then
            echo "mkdir -p '$parent' returned non-zero; bailing out."
            exit 1
        fi
    fi
fi

if [ ! -e "$maildir" ]; then
    echo "maildir '$maildir' does not exist; nothing to do."
    exit 1
fi
if [ -e "$trashdir" ]; then
    echo "trashdir '$trashdir' already exists; bailing out."
    exit 1
fi

mv $maildir $trashdir

exit $?

と、まぁここまでやって初めてPostfixAdminが正常に動作する…はず!!w

あ、プロセス起動するの忘れてた

$ sudo systemctl start httpd
$ sudo systemctl start mariadb
$ sudo systemctl start postfix
$ sudo systemctl start dovecot

$ sudo systemctl enable httpd
$ sudo systemctl enable mariadb
$ sudo systemctl enable postfix
$ sudo systemctl enable dovecot

あ、そういえばselinux無効化とポート解放も忘れてた

SELinux無効化コマンド
$ sudo setenforce 0
/etc/selinux/config
...
SELINUX=disabled
...
firewalld設定ファイルコピー
$ sudo cp /usr/lib/firewalld/services/imaps.xml /etc/firewalld/services
$ sudo cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services
$ sudo cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services/submission.xml
/etc/firewalld/services/submission.xml
<port protocol="tcp" port="587">
firewall設定コマンド
$ sudo systemctl restart firewalld
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --add-service=imaps --zone=public --permanent
$ sudo firewall-cmd --add-service=smtp --zone=public --permanent
$ sudo firewall-cmd --add-service=submission --zone=public --permanent

はぁー今回長くなったな…。

次回

参考にさせて頂いたページと、RainloopというWebメールの設定をしたいと思う。

一応、ここまでで本筋の設定は完了する。
あとはThunderbirdなりiPhoneなりのメーラで設定すれば正常に動作するはずだ…。
自信ないけどw それ以外のネットワークに関する設定は

バーチャルホストのメールサーバ③

(小言)OSを学ぼう ~xv6編~

ボクはIT技術の中で最も興味があることは、OSについてである。
OSと一口にっても、カーネルを指すのかその周りのライブラリやドライバを含めるのか、カーネルでもモノリシックなのかマイクロなのか、汎用なのかリアルタイムなのか、といろいろある。
どういったOSについて興味があるかというと、そのいずれもについてである。

OSの中でも実装しやすく、理解しやすい組み込みOSについて下記で学ばせて頂いた。
12ステップで作る 組込みOS自作入門

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

非常にわかりやすく、OSを動作させるのに必要なハードウェアについての知識も細かく書いてあり、納得がいくまで学ぶことができた。この本で学んでる時は、めちゃエキサイトしていた覚えがある。
ボクはこの本を読みながら、自分で自分なりのソースコードを書き、bootloaderも他の汎用的なものを利用させていただき動作させる、というような方法で学習した。
github.com
興味がある方は、ぜひぜひ一緒に遊びながら作りましょう、教えれることはな~んもないけども。

組込みOSを学んだ次は、汎用OSである。
xv6wikipediaから抜粋すると、

xv6は、ANSI Cによる、Sixth Edition Unixマルチプロセッサx86システムへの再実装である。

つまり、現在の大多数の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へのクエリ設定書いてあるけど全然理解してませーん。

バーチャルホストのメールサーバ②

英語がまぁ上達しない

前回の記事の見出しは、イキって英語で書いてみたのだが、意味合いがちゃんと伝わる文章になっているのか不安だ。
ボクは英辞郎第六版を購入し、PDICを使って英文をなんとか読んでいる。
この業界にいるからには、技術的な文書に関してはリーディングくらいできるようになりたいのだが、まぁ上達しない。
普段使っている英語は「イッツハプニーング」くらいのものだ。
ゆくゆくは「ザッツラーイト」や「ハーイ、クリストファー」も言うようにしたい。

Postfix & Dovecot

PostfixDovecot、その他のデーモン間の関係

http://www.xenlens.com/assets/mailserver_diagram1.png
Debian Wheezy Mail Server – Postfix Dovecot Sasl MySQL PostfixAdmin RoundCube SpamAssassin Clamav Greylist Nginx PHP5 | XenLens
より抜粋

わかりやすい図だとは言わないが、概ね関連が分かる。
より詳細に知りたい場合は元記事も読んでみよう。

前回から続き

tokixy56.hatenablog.com

MariaDBにユーザとデータベースを作成

ユーザ作成
$ mysql -u root -p
Enter password:[password]
...
MariaDB [(none)]> create user 'postfix'@'localhost' identified by [PASSWORD] 'パスワード';
MariaDB [(none)]> create database postfix;
MariaDB [(none)]> grant all privileges on postfix.* to 'postfix'@'localhost';
MariaDB [(none)]> exit

Postfixの設定ファイル(MariaDBへのクエリ設定ファイル)

/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfix
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
#handles catch-all settings of target-domain
user = postfix
password = パスワード
hosts = localhost
dbname = postfix
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'

プライベートSSL証明書の作成

SSL証明書作成

詳細は、他の記事参照のこと。

$ openssl genrsa 2048 > mail.key
Generating RSA private key, 2048 bit long modulus
..................................................+++
.................................................+++
e is 65537 (0x10001)

$ openssl req -new -key mail.key > mail.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
#必須項目のみ入力
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:[県名]
Locality Name (eg, city) [Default City]:[市町村]
Organization Name (eg, company) [Default Company Ltd]:[会社名]
Organizational Unit Name (eg, section) []:[部署名]
Common Name (eg, your name or your server's' hostname) []:[ドメイン名]
Email Address []:[メールアドレス]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:[Enter]
An optional company name []:[Enter]

$ openssl x509 -days 3650 -req -signkey mail.key < mail.csr > mail.crt
Signature ok
subject=/C=JP/ST=Ken/L=City-Shi/O=DefaultCompany.Ltd/OU=Engineer/CN=example.com/emailAddress=example@example.com
Getting Private key

$ sudo mv /etc/postfix/mail.crt

$ sudo mv /etc/postfix/mail.key

次回

Dovecotの設定ファイル及び、必須ユーザの作成とディレクトリ、ファイルのパーミッションの変更について記す。
4つの記事くらいに分割しちゃうなぁ…。
メール設定恐ろしや。

Re: vim ヤンクとクリップボードまわり

誰かに見てもらえてるって嬉しい

こちらの方に過去記事リンク貼っていただいた!! baqamore.hatenablog.com
過去記事はこちら。
tokixy56.hatenablog.com

リンク貼ってもらったからには、自分でもいろいろ検証すべきだなと考え、動作確認してみたら、確かにダメだった…

問題の動作はこうだ。

makefile
LD_PATH = "firmware/loader"
OS_PATH = "firmware/os"
MAKECMD = "make"
...
# ----- bootloader make -----

.PHONY: loader
loader :
    cd $(LD_PATH); make

# ----- operating system make -----
.PHONY: os
os :
    cd $(OS_PATH); make
...

上記のmakefileなどがあったとして、コメント部分以外のmakegmakeに変えたい時とかよくやるのは、

  1. MAKECMD = "gmake"に書き換え
  2. gmake上で yw して単語をコピー
  3. / で書き換える内容(make)を検索
  4. n で書き換える単語へ移動
  5. コメント部分のmakeは通過するのでもう一回 n
  6. vw して単語を選択
  7. p で書き換え
  8. n で書き換える単語へ移動
  9. コメント部分のmakeは通過するのでもう一回 n
  10. vw して単語を選択
  11. p で書き換え
  12. 繰り返す

というのをよくやる。

この場合、ボクの過去記事の設定では、末尾の単語を書き換えようとするとid:wooweezooweeさんの言及するように前後が入れ替わるような具合で動作する。 上記の場合だと、

makefile置換後
# makeの前にあったスペースがgmakeの後ろに動く
    cd $(LD_PATH);gmake 

これは、ノーマルモードだとカーソル位置が文字と文字の間にあるのではなく、文字の上にあるため、末尾を切り取った際にカーソルが後ろにずれる、ことが原因で起こる。 この説明だとものすごくわかりにくので、元のvnoremapをコメントアウトして、すべて手動で動作確認してみるとわかりやすい。

そこで、ボクの提案する苦肉の解決策は下記だ。

vimrc
" ビジュアルモード時の置換貼り付け
vnoremap  <silent>  p   ""c<C-r>+<ESC>
" ビジュアルモード時の置換書き換え
vnoremap   <silent> c   ""c

選択範囲をcで切り取り、インサートモードに入り、<c-r>でペーストしてインサートモードを抜ける…。 ちょっとクリーンな動作じゃないけど目的の動作は果たしてくれるから、まぁ良しとしよう…

また、これだと複数行をペーストするときにインデントが崩れまくる。

vim ペースト 崩れる

とかで検索するとめっちゃ出る。 これを回避するには、

vimrc(インデント崩れ対応)
" ビジュアルモード時の置換貼り付け
vnoremap <silent> p <esc>:set paste<cr>gv""c<C-r>+<ESC>:set nopaste<cr>

どんだけやねんーぷ、となるがこれで複数行ペースト時も崩れないだろう。

DragonFlyBSDが気になって仕方がない

全然関係ない話だが、DragonFlyBSDが気になって仕方がない。
あとjail
仮想化じゃないくてLinuxバイナリがそのまま動くからパフォーマンスは最高らしい。
よし、頑張ってノートPCにインストールして、泣きを見ようかと思う。

バーチャルホストのメールサーバ①

I have a playful parsonality.

最近、記事の更新が滞っていたのだが、これは仕事で考えたいことがあまりにも多く、帰ってきてからもなかなかそのことが頭を離れなかったからである。 次から次へと楽しい問題が舞い降りて充実した時間を過ごしていた。 キャッシュネームサーバの設定、社内サーバ構築とグループウェアの設定、管理しているコンテンツの管理方法の変更などなど…。
なかでも3週間くらいかけてハァハァ言いながら取り組んだ課題が、メールサーバの構築であった。 社内のメールサーバがQmail軸のちょっと古い環境だったので、ナウい環境にしたいということだった。 メールサーバの構築は今までずっと避けてきた課題であったのだが、避けるのもおかしくなかったのだな、と納得がいくくらい難しかった。
まず初めてメールサーバを立てようと思った場合、絶対にどこかで問題が生じる。 誰かが書いてくれている記事を見つけて、それ通りにやってもうまくいかないことが多い。 自分のサーバ環境と記事を掲載している人のサーバ環境は全く異なることも原因の一つだったりするが、まず第一にぶち当たる問題は「メールプロトコルをちゃんと知らない」ことだ。 メールプロトコルをちゃんと理解したうえでメールサーバを立てる人って、そんなにいるのかなぁ?
そんなこんなで、サーバ環境を整えつつ、メールプロトコルを理解しつつ、Google先生上のたくさんの記事を見つつメールサーバを構築した。

で、見出しの「ボクの人格はふざけてます」のことだが、どのようにふざけているかというと、このメールサーバ構築という課題に取り組んでいるとき、仕事中も他の仕事は秒速で終わらせて帰宅後も睡眠時間を削ってsshで向き合って向き合って、もう君以外愛せない、たとえどんなエラーを吐いたとしてもぉーおー、とキンキキッズになれそうなくらい没頭していた。
1週間経った頃、あそうか、ボクは人格破綻者なんだ、とハッキリ理解できた。

各メールプロトコルとメールエージェントの理解

実際にメールサーバを立てる際に、どのエージェント(デーモン)がどのプロトコルをどのように扱っているのか、という範囲がわからなく時があった。 それぞれの境界線をはっきりさせておくと後々設定していく内容が理解しやすいと思う。

エージェントとプロトコルの関係

http://images.slideplayer.com/23/6641114/slides/slide_2.jpg
David Byers davby@ida.liu.se IDA/ADIT/IISLAB ©2003–2004 David Byers Electronic Mail PRINCIPLES – DNS – ARCHITECTURES – SPAM. - ppt download
より抜粋

  • MTA - Mail Transfer Agent
  • MDA - Mail Delivery Agent
  • MUA - Mail User Agent
  • MRA - Mail Retrieval Agent
  • MSA - Mail Submission Agent
  • MAA - Mail Access Agent

こんなエージェントあるんや、って言うようなエージェントがある。
Postfixは多分、MTAとMSAに特化してるんだと思う。
DovecotMDA、MRA、MAAを担ってるのかなという感じなのだが、実際各デーモンがどういった範囲でエージェントの作業をしているかはわかっていない…。

説明を少なめに、かつ分割します…

丁寧に書きすぎるとブログの範疇を超えてしまいそうなので、設定ファイルと簡潔な説明を心がけて記載しようと思う。
あまりにも設定数、設定ファイルが多い…。
というか、ちゃんとすべてをカバーして書けるかどうかも怪しい。
手順書というよりは、メモ書き程度で見るようにしてほしい。

環境

OS: CentOS Linux release 7.2.1511 (Core)

パッケージインストール
$ sudo yum -y install mariadb \
postfix \
postfix-ssl \
dovecot \
dovecot-mysql.x86_64 \
httpd \
php \
php-mysql \
php-mbstring \
php-pear \
php5-mcrypt \
php-mcrypt \
php-imap \
cyrus-sasl \
cyrus-sasl-plain \
cyrus-sasl-md5 \
libapache2-mod-php \
libapache2-mod-php5

Postfixの設定ファイル

/etc/postfix/main.cf
myhostname = [FQDN]
mydomain = [ドメイン名]
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = localhost.$mydomain, localhost
mynetworks = 192.168.0.0/24, 127.0.0.0/8, [アクセスを許可するIP]
relayhost = [プロバイダのsmtpサーバ]:587 #OP25B対策のため
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown

#SMTP-Auth Settings
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_mechanism_filter = plain
smtp_sasl_security_options = noanonymous
smtp_sasl_path = private/auth
smtp_sasl_tls_security_options = noanonymous
smtp_tls_CApath = /etc/ssl/certs/ca-certificates.crt

smtp_tls_security_level = may
smtp_tls_loglevel = 1

#SMTPS
local_transport = local
smtpd_use_tls = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = [FQDN], [ドメイン名]
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net

smtpd_tls_cert_file = /etc/postfix/mail.crt
smtpd_tls_key_file = /etc/postfix/mail.key
#smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
#smtpd_tls_key_file = /etc/postfix/mail.pem
#broken_sasl_auth_clients = yes
broken_sasl_auth_clients = no
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination

smtpd_tls_security_level=encrypt
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s

#Virtual Domain w/MySQL
virtual_mailbox_base = /var/spool/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
virtual_transport = virtual
virtual_mailbox_domains =
        proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_alias_maps =
        proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
        proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
        proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
        proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
        proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
/etc/postfix/master.cf
smtp      inet  n       -       n       -       -       smtpd

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING  -
tlsmgr    unix  -       -       n       1000?   1       tlsmgr

OP25B対策

/etc/postfix/sasl_passwd

下記は、自分が契約しているプロバイダのメールアドレスとパスワードを設定する。 gmailを設定する方法もあるのだが、それは必要になった場合に書くようにしよう。

[smtpサーバ名]:ポート メールアドレス:パスワード

下記コマンドで/etc/postfix/sasl_passwd.dbが作成される。

$ sudo postmap /etc/postfix/sasl_passwd

main.confで設定したリレーホストへ接続し、ここで設定したプロバイダのメール認証情報で認証してメールリレーすることにより、OP25Bを回避して正しい相手先へメールを送信することができるようになる。

次回

PostfixからMariaDBへ発行するクエリの設定ファイルを書く。
メール設定がこれほどまでに大変だったとは、と痛感するドキュメント量になることであろう…。

番外編① Googleのサービスを使おう

http://www.wired.com/wp-content/uploads/2015/09/google-logo.jpg

ITぽいサービスを利用してみたい

我がブログ「ソフトウェアとハードウェアの境界」は、あくまで組込み開発や開発環境における、技術的な誰得情報を提供することを標榜しているのだが、最近全くその方面は手付かずである。
現在の職場に社内SEとして転職してから、その他のハイエンドな技術、ネットワーキングや仮想化などについて知るのが楽しくて仕方がない。
そういったことの勉強も含めて、職場で知り合ったウェブ技術者やデザイナさんと連絡を取り合って、趣味的な感じでウェブページを作ろうと思っている…思っているだけでまだ何もできていないのだが…。
一人ですべてのステップをこなしていくのは、それはそれで面白いのだが、何人かと手を合わせて何かを作っていく過程、というのも非常に面白いと思う。
完成ではなく、その過程こそ楽しい、はず。

ではその過程をより面白くする方法は何かないかな、と考えた時に、種々のウェブサービスを利用することが挙げられる。
いわゆるグループウェアと呼ばれるサービスだ。
ボクは今の会社に入って初めて、サイボウズチャットワークというものを知った。
以前の職場では開発業務に関わったりしていたのだが、グループウェアは全く利用することはなかった。
「出勤後のルーティン」の中に、そのサイボウズの通知確認や予定の確認が入るようになって、「うわぁIT業界っぽいサイコー」と思いながら毎日出社している。

グループウェアごとに特色もあり、どのように利用するかが鍵となる。
サイボウズLiveとチャットワークについては番外編②、③で書いてみようと思うが、まずはGoogleのサービスの利用方法から、声を大にして伝えたい。

Googleの有名なサービスとしては、GmailGoogleカレンダーGoogleドライブなどが挙げられる。
他には、GoogleマップアドセンスYoutubeGoogle翻訳などたくさん提供されているのだが、ボクが普段使っているサービスをまとめてみた。

ボクが利用しているGoogleの主なサービス

これらについての概要と主な使い方とおすすめの使い方、及びその他のサービスや端末とどのように連携させて使うのが良さそうか、提案していきたいと思う。

Google Chrome(ブラウザ)

Google Chrome イメージ

f:id:tokixy56:20160422145201p:plain
まずは何と言ってもブラウザである。
iPhoneアプリはこちら。 Chrome - Google のウェブブラウザを App Store で
ブラウザの概要的な説明については割愛する。
今の仕事をするようになってから、ブラウザの重要性というものを本当に理解した。
サーバ管理やドメイン管理、グローバルIPアドレス管理などもSEの作業範囲なのだが、プロバイダやレジストラの管理画面に接続するのはブラウザだ。
そこにアクセス出来ないとか、表示が出来ない・崩れるとか、安全性・安定性を欠くようなブラウザは使用できないということだ。
こんにち普通に利用さているブラウザの中にはそのような不具合を含むものはそんなに無いとは思うのだが…
また、社内にIP電話を配備しているのだが、このIP電話の設定を操作するのも、LAN内からそのIP電話にブラウザからアクセスする。
その他ルータやファイアウォール、社内のセキュリティツールの管理画面もブラウザから操作するものがほとんどと言っていい。
はじめ、GoogleがChromeBookなるものを売りだしたと聞いた時には「何言い出すの」と思ったけど、日々の作業の中でブラウザを利用する機会が圧倒的に多いということが分かったとき、ある程度納得せざるを得なかった。

ボクの勝手な評価だが、Google Chromeはほぼ完璧だ。
しかし、一つだけ大きな難点がある。
印刷機能
印刷さえ充実すればChrome一本で生きていける。
これ以上何も言わないが、印刷についてはFirefoxの方が数倍上手である。

また、もう一つ便利な使い方として、タブの固定がある。
タブを固定しておくことによって、Google Chrome起動時に開くページを固定させることができる。
上記のChromeの図の様に、ボクはタブの固定機能を利用しGmailGoogleカレンダーGoogleキープを起動時に開くようにしている。

以下のサービスの説明は、Google Chromeから利用することを前提としている。
FirefoxやEdgeなどからも利用できるはずだが、ボクは利用していない。
Google Chromeを利用して、アプリや拡張機能を追加していけば更に最強のツールなってくれること間違い無しだ。

Gmail & Googleハングアウト

Gmail & Googleハングアウト イメージ

f:id:tokixy56:20160421182029p:plain

Googleハングアウト イメージ

こちらはハングアウトのみのページ。
f:id:tokixy56:20160422122030p:plain

iPhone版 ハングアウト イメージ

f:id:tokixy56:20160422130618p:plain:w250 f:id:tokixy56:20160422130621p:plain:w250

AndroidGmailGoogleハングアウトを標準搭載している。
iPhoneのアプリはこちら。
Gmail - Googleのメールを App Store で
ハングアウトを App Store で
一つ目の画像「Gmail & Googleハングアウト イメージ」を見てもらいたい。
こちらのウィンドウはいつものGmailの画面だ。
左下を見てもらいたいのだが、ここにGoogleハングアウトのメンバリストが表示されている。

実際にGmailのタブでハングアウトしようするとこのようになる。
f:id:tokixy56:20160421181902p:plain
Gmailを見ながらハングアウトで連絡を取れるわけだ。
ハングアウトの履歴はGmailの「チャット」Boxで履歴を遡れる。
LINEの様にグループでのチャットもあるし、写真の送信も可能。
動画の送信は出来ないが、これはGoogleドライブと連携することによって解消される。
Skypeの様に無料で音声通話、ビデオ通話も利用できる。
まぁ、この手のチャットツールは似たり寄ったりなので、もうすでに利用しているサービスがあると、わざわざハングアウトへ移行する必要も無いのかもしれない。
しかしこれからの利用を考える、あるいはAndroid端末を利用しているのであれば、ぜひともGoogleハングアウトをおすすめする。

このサービスの決め手

UI(ユーザインターフェース)とスマートフォンとの親和性の高さ、かなと思う。
実際のところ、機能面ではSkypeやLINEと何ら変わりはない
Skype for webやoutlook.com、LINEのChromeアプリがあるのでブラウザでの使用という点でも同様である。
ただ、Googleハングアウトは複数のチャットを同時に表示できるので、見やすく操作性も高いと思う。
そして私は打倒LINEを掲げて現在活動中なので皆さんご協力よろしくお願いします。
PC操作してるとスマホいじるの面倒でねぇ…。
まぁLINEユーザ数は多すぎて打倒は不可なんですけど…。

Googleカレンダー

Googleカレンダー イメージ

f:id:tokixy56:20160422144713p:plain

これについては言わずもがなであるが、みんな大好きGoogleカレンダーである。
iPhoneアプリはこちら。
Googleカレンダーを App Store で
まずは、Googleカレンダーの短所から挙げたいと思う。
何故短所からなのか。
Googleに早く対応してほしいからだ!!笑

Googleカレンダーの短所
  • iPhoneでプッシュ同期されない
    これは由々しき事態である。非常に忌々しい。これはGmailも同様で、以前からiPhoneGmailを利用していたユーザは怒り心頭であっただろう。
    これはGoogleだけが悪いのではなくAppleも良くない対応があって、Push通知の終焉はそのいざこざの結果ようだ。
    もうみんな仲良くしてよぉ~ん。

以上、短所でした。
そんなに短所は多くないと思う。
例えば比較対象として、Outlook.comのカレンダーがあるのだが、これはiPhoneと同期すると、変更内容を即反映してくれる。
iPhoneのフェッチ同期は最短でも15分。
うーん、まぁ大丈夫と言えば大丈夫なんだけど…。
しかし、その短所を払拭しきる魅力がGoogleカレンダーにはある。

Googleカレンダーの長所
  • 予定入力がスムーズ
    これがGoogleカレンダーを利用する上で最も魅力的なポイントだ。 これに関しては他のカレンダーのサービスを利用すれば一目瞭然である。
    またこちらのページを参照して欲しい。
    bita.jp
  • Googleキープと連携できる(リマインダー)
    リマインダー機能との連携というのは他のサービスにもあると思うが、Googleキープも非常に使いやすいのでぜひ利用して欲しいと思う。
    Googleリマインダーは2016-04-22現在、iPhoneのリマインダーと同期できない
    というか同期できるようになるのかなぁ…
    Googleさん期待してます。

他にもいろんな機能があるが、項目だけ上げておく。
まずは知ることが大事ですよね。
詳細については検索すれば見つかるはず。

あ、やばいもう無い笑

Googleカレンダーの使用方法

ボクはあまりたくさんのカレンダーを作成せず、シンプルに利用している。
「Calendar」はそのままスケジュールとして利用。
Log」カレンダーを作成しているが、その都度適当に何をしたか、些細なことを記録・ロギングしている。 日記を書きたいのだけど、まとめて書くよりはその都度書いた方がわかりやすくて良いなと思った。
リマインダー」はスケジュールというよりは、あれを買うとか、ここに行くとか、あいつに連絡するとか、これも些細な予定を書くようにしている。
なんにせよ、思いついたとき「メモらなければ」と思ったときにすぐに入力できることが大事だと思う。

Googleキープ

Googleキープ イメージ

f:id:tokixy56:20160424215723p:plain
Google謹製のメモサービスである、「Googleキープ」。
AndroidiPhoneのアプリももちろん存在する。
Google Keep - メモとリスト - Google Play の Android アプリ
Google Keep - 思い付いたら、どこにいてもメモを App Store で

メモアプリも現在ではこの世に数多あるのだが、すべての端末でシームレスに内容を確認できるものは限られてくる。
中でもGoogleキープは簡単・シンプルなメモというイメージで、そのメモのラベル付けやあとからリマインダーに変更したりと、わかりやすい機能をいくつか搭載している。
リマインダー機能に関しては、Googleカレンダーの方にもうすでにあるのだが、Googleキープで作成したリマインダーもGoogleカレンダーに反映されるようになっている。
とりあえずメモっておいたタスクなどの内容を、あとでリマインダーにして日付を指定する、といった使い方にも適している。

GoogleキープのリマインダーはGoogleカレンダーに表示される

01.Googleカレンダー

f:id:tokixy56:20160424225522p:plain
まだ何も予定を追加していない状態。

02.Googleキープで予定を追加

f:id:tokixy56:20160424225639p:plain
「タスク1」を追加する。

03.Googleキープのメモをリマインダーにする

f:id:tokixy56:20160424225726p:plain
人差し指マークをクリックして、リマインダーを設定する。

04.Googleカレンダーで確認

f:id:tokixy56:20160424225811p:plain
このように、Googleカレンダーで表示される。

上記のように利用していけば、とりあえずメモして、後で日程を設定するということもスムーズにできる。
また、ラベル機能を利用すればメモをあとから種別ワケすることもできる。

他には、ウェブページを右クリックすることによって、そのページタイトルとURLをGoogleキープで保存することができる。
わざわざブックマークに保存したくない場合は、Googleキープに保存して、どのような用途で保存したのか、メモとともに残すなどすると、後で振り返る時にも便利だ。

総評

上記のすべてのサービスはGoogle Chromeを介して操作ができ、スマートフォンにも対応しているので内容を確認することはいつでもどこでも可能だ。
効率良く記録を残す方法を考案している方や、誰かと連絡を取りながらデータやスケジュールの管理をする場合などは、ぜひとも紹介したGoogleのサービスを利用して欲しいと思う。

IT系の企業でも上記のようなサービスを上手く使えていないようだ。
というか、どのように使用したらいいのかよくわかっていない。
そのサービスで一体何ができて、どういう風に利用すれば自社にとって有益かなど、なかなか考える時間が無いのかもしれない。
しかし、こんなに便利な無料サービスを利用しない手は無い。
会社で利用するのでなく、個人での利用でも非常に有益である。
まずはどういった機能があり、何が可能で、自分がどういう方法で利用すれば大事な記録を取り損ねないようにできるか、ぜひとも考えてもらいたい。

私事

ハングアウトを利用しだしてからLINEで連絡を取り合うのが億劫になってきた。
ずっとPCで作業する人は同じような気持ちではないだろうか。
LINEのChromeアプリもあるんですけどね、なんかちょっとLINEって気がひけるんですよね。
スタンプのせいかな?
そして、みんな、ハングアウトを利用するようになったらぜひとも一緒に遊びながら開発でもしようじゃないか。
いつでも連絡をお待ちしている。
(このブログの著者は、宗教、特殊なビジネス、独特なセミナーの受講など、怪しい事は一切しておりません。また、Googleの回し者でもありません。少し頭がオカシイだけです。ご安心ください。一緒に開発してみたいと言う方、いつでも連絡お待ちしております。)
Let's enjoy develop!!