ConoHaでメールサーバを構築する

ConoHaでメールサーバを構築しようとしたのだけれど薄い本(専門書)の設定をしただけではメールができなかったので、いろいろ調査して設定を試してみたらメールサーバが完成したので、その時のログです。
また、途中に参考にさせて頂いたサイトのリンクを載せています。

まずはConoHaの薄い本通りに設定

この時、/etc/postfix/main.cfの最後の設定(smtpd_recipient_restrictions)の項目はカンマかもしくは改行した時にスペースが必要
参考にしたのはこちら

それから、今回構築するメールサーバはドメインtetsis.com全体のメールサーバにする予定なのでmydestinationsを以下の様に変更

/etc/postfix/main.cf

mydestination = $myhostname, localhost.$mydomain, localhost
↓
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

それから、私の環境ではISPが25番ポートの通信を遮断しているみたい(OB25B)なので通常のSMTPではサーバと通信できないのでSubmission(587番)ポートを使ってサーバと通信するように設定
参考にしたのはこちら

/etc/postfix/master.cf

#submission inet n       -       n       -       -       smtpd
↓(コメントを外す)
submission inet n       -       n       -       -       smtpd

ここまででローカル配送ができる
しかし、Gmail配送できない。ログを見るとIPv6で通信しているので今回は通信をIPv4に限定する

/etc/postfix/main.cf

inet_protocols = all
↓
inet_protocols = ipv4

これでGmailに配送できる
しかし、迷惑メールトレイに入れられてしまうので、DNSにSPFレコードを追加する

以下の図はDNSのお名前.comにSPFレコードを登録した状態
VALUE部分は「v=spf1 +ip4:(IPアドレス) ~all」にする
参考にしたのはこちら
spf

ここまででGmailの受信トレイに入れられる
一応ConoHaにメールサーバを構築する目標が達成

メールの暗号化

SMTPS、POP3S、IMAPSに対応させる

まずは自己証明書を作成する

[root@www ~]# cd /etc/pki/tls/certs
[root@www certs]# make server.key
umask 77 ; \
/usr/bin/openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 bit long modulus
.........................................+++
...............................+++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
[root@www certs]# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key
[root@www certs]# make server.csr
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key server.key -out server.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) []:www.tetsis.com
Email Address []:info@tetsis.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@www certs]#
[root@www certs]# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=JP/L=Default City/O=Default Company Ltd/CN=www.tetsis.com/emailAddress=info@tetsis.com
Getting Private key
[root@www certs]# cp server.key ../private/

最後にPostfixとDovecotの設定をする

/etc/postfix/main.cfに以下を追加

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/private/server.key
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s

/etc/postfix/master.cfの以下のコメントを外す

smtps     inet  n       -       n       -       -       smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

/etc/dovecot/conf.d/10-sslを以下のように修正

#ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
↓
ssl = yes
ssl_cert = </etc/pki/dovecot/certs/server.crt
ssl_key = </etc/pki/dovecot/private/server.key

/etc/dovecot/conf.d/10-master.confを以下のように修正

service imap-login {
inet_listener imap {
#port = 143
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}

service pop3-login {
inet_listener pop3 {
#port = 110
port = 0
}
inet_listener pop3s {
port = 995
ssl = yes
}
}

参考にしたのはこちらこちらこちら

最後にPostfixとDovecotを再起動する

# service postfix restart
# service dovecot restart

convertコマンドで解像度を指定する

gnuplotで出力されるepsファイルをpngファイルに変換するために使っているconvertコマンドで解像度を指定する方法です。

調べるたびにqualityが出てきて、あれなんか違う。。ってなるので備忘録として

convert -density 800 graph.eps graph.png

densityオプションを使う
数字は大きければ大きいほど解像度が良くなるみたい

CentOS6.5にてネットワーク内のWindowsから誰でもアクセスできるネットワークドライブ作成(論理ボリューム使用)

今回やったのは2つ

  1. Sambaを使ってWindowsから誰でもアクセスできるネットワークドライブを作成する
  2. 論理ボリュームを作成したHDDをネットワークドライブ領域用にマウントする
    (論理ボリュームを使うのは、後々HDDを増設してネットワークドライブの容量を簡単に増加させるため)

Sambaを使ってWindowsから誰でもアクセスできるネットワークドライブを作成する

これはこのサイトを参考にさせて頂きました

なのでここでは省略

論理ボリュームを作成したHDDをネットワークドライブ領域用にマウントする

今回ネットワークドライブ領域用に使うHDDはsdbとして認識されている

(2015/01/25追記)
まずLVM用のパーティションを作成する
今回のHDDはAFTなのでパーティションはセクタで指定したいので-uオプションをつける

# fdisk -u /dev/sdb
コマンド (m でヘルプ):n
コマンドアクション
e   拡張
p   基本パーティション (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-4294967294, default 1): 2048
終点 シリンダ または +サイズ または +サイズM または +サイズK (2048-4294967294, default 4294967294):(空Enter)
コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): 8e
コマンド (m でヘルプ): w
パーティションテーブルは変更されました!
# pvcreate /dev/sdb1
# vgcreate vg_storage /dev/sdb1
# lvcreate -l 100%FREE -n lv_storage vg_storage
# mkfs -t ext4 /dev/mapper/vg_storage-lv_storage
# mount -t ext4 /dev/mapper/vg_storage-lv_storage /home/share

再起動してもマウントされるように/etc/fstabに記載

(末尾に以下を追加)
/dev/mapper/vg_storage-lv_storage /home/share	ext4	defaults	1 2

完了

今後の課題として・・・
ファイルシステムにNTFSを使ってみたかったけどできなかった
でもext4の最大ボリュームサイズは1EBらしいから将来1EBのネットワークドライブが作れるかもw
(NTFSの最大ボリュームサイズは256TB)

WordPressのサーバを移行する(同一ドメイン)

自宅のサーバから某VPSにブログを移行したときのログです

移行するデータは次の2つ

  • ドキュメントルート内にあるWordPress用のディレクトリ
  • WordPressのデータベース(MySQL)

まずは上記の2つをhomeにコピー

cp -a /var/www/html/blog .
mysqldump -u root -p wordress > wordpress.dump

(-pはコマンドを打った後にパスワードを入力するオプション)

次はデータをtarで固めてデータを移行

移行元サーバで以下のコマンドを実行

tar zcvf blog-data.tar.gz blog wordpress.dump

移行先のサーバで以下のコマンドを実行

tar zxvf blog-data.tar.gz

あとは、WordPressディレクトリをドキュメントルート内に移動し、データベースを新規作成し、復元

$ mysql -u root -p

MariaDB [(none)]> CREATE DATABASE wordpress CHARACTER SET utf8;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> GRANT ALL ON wordpress.* TO wordpress@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> \q
Bye

$ cp -a blog /var/www/html/
$ mysql -u root -p wordpress < wordpress.dump

ここまでの作業が終わると
http://(移行先のIPアドレス)/blog/
にアクセスするとブログを確認できる

最後にDNSサーバにてAレコードを変更すれば完了

Windows8.1のコマンドプロンプトにjavaコマンドをインストール

Windows8.1のコマンドプロンプトでjavaコマンドを使えるようにしたときのログです

 

まずOracleのWebサイトからJava SEをダウンロードする
http://www.oracle.com/technetwork/java/javase/downloads/index.html
本ブログ執筆時(2014/12/17)のバージョンは8u25

Javaのダウンロード1
Javaのダウンロード1

 

ライセンスの同意にチェックして、インストールファイルをダウンロード
私の環境はWindows8.1の64bit版なので、今回は「Windows x64」を選択

Javaのダウンロード2
Javaのダウンロード2

 

ダウンロードしたファイルを実行
特に理由がなければすべて「次」でOK
(インストール先を変更しても動作するのは確認済み)

Javaのインストール1
Javaのインストール1

Javaのインストール2
Javaのインストール2

Javaのインストール3
Javaのインストール3

Javaのインストール4
Javaのインストール4

 

最後にJavaを環境変数に追加する
「コントロールパネル」>「システムとセキュリティ」>「システム」>「システムの詳細設定」と選択

「環境変数」をクリック

パスの設定1
パスの設定1

 

「システム環境変数」内の「Path」を選択して、編集をクリック

パスの設定2
パスの設定2

 

「変数値」にJavaプログラムがあるフォルダを追加する
今回は「C:\Program Files\Java\jdk1.8.0_25\bin」を追加する
(他のパスと区切るため、パスの前に「;」をつけるのを忘れずに)

パスの設定3
パスの設定3

 

これでコマンドプロンプトでJavaが実行できることを確認

Javaコマンドをコマンドプロンプトから確認
Javaコマンドをコマンドプロンプトから確認

 

他のアプリケーションがJavaを使えるようにするためには環境変数に「JAVA_HOME」を追加する必要があるが、Javaをコマンドプロンプトだけで使うのであれば必要ないので今回はここまで

VirtualBoxのネットワーク設定をブリッジアダプターにする

VirtualBoxのネットワーク設定はデフォルトではホストOSがルータとなって、ゲストOSはホストOSとは別のネットワークに属することになります
環境によってはゲストOSはホストOSと同じネットワークでいい場合があるので、そういった時の設定を書いていきます

 

「設定」ー>「ネットワーク」の「割り当て」欄のデフォルト設定は図1のように「NAT」になっている

図1 デフォルトのネットワーク設定
図1 デフォルトのネットワーク設定

それを「ブリッジアダプター」に変えれば(図2)、ホストOSと同じネットワークになる

図2 ネットワーク設定をブリッジアダプターに
図2 ネットワーク設定をブリッジアダプターに

CentOS6.5でUSBをマウントする

CentOS6.5でUSBをマウントするときのやり方です

私はVirtualBoxの上にCentOSをゲストOSとしてインストールしているので
まずはVirtualBoxでゲストOSにUSBを認識させる方法から説明して
その次にCentOSでUSBをマウントする方法を説明します

 

  • VirtualBoxでゲストOSにUSBを認識させる方法

ちなみにVirtualBoxのバージョンは4.3.16

図1はゲストOSの「設定」ー>「USB」をクリックしたところで、最初は「USB2.0(EHCI)コントローラーを有効化」にチェックがついていないのでチェックをつける

すると、ウィンドウの下のほうに「Extension Packのインストールが必要」みたいなコメントがでるので、VirtualBoxのサイトに行ってダウンロードしてくる

図1 VirtualBox設定画面1
図1 VirtualBox設定画面1

ダウンロードしたファイルを実行すると図2のウィンドウ がでてくるので「インストール」をクリックするとインストールできる

図2 Extension Packのインストール
図2 Extension Packのインストール

すると、コメント文が消えてUSBを認識する準備が整う

図1の右側のUSBマークにプラスマークがついているアイコンをクリックすると、現在ホストOSが認識しているUSB機器の一覧が表示されるので、任意の機器を選ぶと図3のようになる

図3 VirtualBox設定画面2
図3 VirtualBox設定画面2

これで、ゲストOSがUSBを認識できるようになった

 

  • CentOSでUSBをマウントする方法

まずCentOSでUSBがどのように認識されているかを確認するためにdmesgコマンドを打つ

# dmesg
(中略)
sd 3:0:0:0: [sdb] 62127601 512-byte logical blocks: (31.8 GB/29.6 GiB)
sd 3:0:0:0: [sdb] Write Protect is off
sd 3:0:0:0: [sdb] Mode Sense: 43 00 00 00
sd 3:0:0:0: [sdb] Assuming drive cache: write through
sd 3:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
(後略)

今回は「sdb1」という名前になっていることが分かる

マウントにはmountコマンドを使う

# mount /dev/sdb1 /home/samba/

(マウント先は自分がマウントしたい場所を指定)

これでマウントはできたのだが、このままだと再起動したときにもう一度このコマンドを打たないといけないし、権限の設定とかが良く分からんので「/etc/fstab」ファイルに記述を加えることにする

# vim /etc/fstab
(末尾に以下を追記)
/dev/sdb1  /home/samba  vfat  defaults,umask=000  1 2

今回はUSBのファイルフォーマットがFAT32だったので「vfat」を指定

「umask」は権限に関する記述で、000にすると誰でも読み書き実行が可能になる(コマンドで確認すると権限がが777になる)

これで再起動してもマウントされる状態になった

CentOS6.5でポート解放する

CentOS 6.5 でiptablesを使ってポートの開放をしたときの記録です

iptablesの場所はココ↓

/etc/sysconfig/iptables

iptablesには最初から下記の行があるので、新たにポートを開放したければ、この行をコピペして「22」のところを開放したいポート番号に変えればOK

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

たとえばhttpの80番を開放したければ

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

で良い

記入したらiptablesを再起動するのを忘れずに

service iptables restart

ブログ開設

念願だったブログをしました。

3日坊主になる予感しかしませんが、のんびりやっていきます。

当面は、作業ログ・備忘録として使っていく予定です。