Ubuntu 14.04 にRuby 2.2をインストールし、SSHにより自動操作

まず、Rubyをインストールする
端末を開き、コマンドを実行する

sudo apt-get install software-properties-common

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.2

インストールを確認

ruby -v

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux-gnu]
インストール完了を確認

参考

PPAパッケージを利用してRuby 2.2をUbuntu 14.04にインストールする


http://www.oiax.jp/rails/zakkan/apt-get-install-ruby2-1.html

作業用のフォルダ(work)を作成する

cd ~
mkdir work
cd work

SSH接続プログラム ssh01.rbを作成

参考

vi ssh01.rb

i(挿入)

#!/usr/bin/env ruby
# -*- encoding: UTF-8 -*-
require 'rubygems'
require 'net/ssh'
command="ls -la"
cmd_data=""
# Net::SSH.start('xxx.xxx.xxx.xxx', 'usrename', :password => 'password' ,:port => 22) do |ssh|
Net::SSH.start('xxx.xxx.xxx.xxx', 'usrename',:keys => ['//home/xxxx/key-2015-0x-xx-xx-xx.pem'],:port => 22) do |ssh|
 ssh.open_channel do |channel|
  channel.request_pty do |ch , success|
   raise "I can't get pty rquest" unless success
   ch.exec(command)
   ch.on_data do |ch , data|
    data = data.strip
    cmd_data << data if data.size > 0
    puts data
   end
  end
 end
end

ESC+:wqで、保存終了

実行してみる

ruby ssh01.rb

エラーになる

/usr/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in <code>require': cannot load such file -- net/ssh (LoadError)

net/ssh が、ないようだ

参考
http://morizyun.github.io/blog/net-ssh-net-scp-gem-ruby/
http://qiita.com/znz/items/5471e5826fde29fa9a80

gem で、bundlerをインストールする必要がある

gem -v

2.4.5.1
gemは、入っている

 bundler -v
コマンド 'bundler' は見つかりませんでした。もしかして:
 コマンド 'bundle' - パッケージ 'bundler' (universe)
bundler: コマンドが見つかりません

bundlerはないようだ。

gem install bundler

で bundler をインストール

Fetching: bundler-1.10.6.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /var/lib/gems

Permissionエラーなので、
sudoでないといけないようだ

sudo gem install bundler

実行すると

Fetching: bundler-1.10.6.gem (100%)
Successfully installed bundler-1.10.6
Parsing documentation for bundler-1.10.6
Installing ri documentation for bundler-1.10.6
Done installing documentation for bundler after 4 seconds
1 gem installed

となった、インストールできたようだ
一応、確認

bundler -v

Bundler version 1.10.6

インストール確認OK

Gimfileを作る

cd ~/work
bundle init
ls

Gemfile
が、できている
Gemfile
に、gem “net-ssh”を追加する

vi Gemfile

i(挿入)
gem “net-ssh”
を追加
ESC+:wqで保存終了

bundleを実行し、net-sshを読み込む

bundle

実行すると

bundle
Fetching gem metadata from https://rubygems.org/.......
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Installing net-ssh 2.9.2
Using bundler 1.10.6
Bundle complete! 2 Gemfile dependencies, 3 gems now installed.
Use </code>bundle show [gemname]` to see where a bundled gem is installed.

インストールできたようだ

再度、実行してみる

cd ~/work
ruby ssh01.rb

sshで接続し、commdを実行できた
合計 44
dr-xr-x—. 4 root root 4096 5月 24 20:05 2015 .
dr-xr-xr-x. 24 root root 4096 5月 24 07:51 2015 ..
drwxr-xr-x. 3 root root 4096 5月 4 16:22 2015 .ansible
-rw——- 1 root root 2080 9月 24 21:42 2015 .bash_history
-rw-r–r–. 1 root root 18 5月 20 19:45 2009 .bash_logout
-rw-r–r–. 1 root root 176 5月 20 19:45 2009 .bash_profile
-rw-r–r–. 1 root root 176 9月 23 12:59 2004 .bashrc
-rw-r–r–. 1 root root 100 9月 23 12:59 2004 .cshrc
drwx—— 2 root root 4096 8月 30 12:27 2015 .ssh
-rw-r–r–. 1 root root 129 12月 4 06:42 2004 .tcshrc
-rw——- 1 root root 1293 5月 24 11:44 2015 .viminfo

新ConoHaにphpMyAdmin 4.0.10.10をインストール

新ConoHaに
phpMyAdminをインスツールする

mysqlの5.1.xなどと接続するため、
phpMyAdmin 4.0.10.10
を、インストールする

端末から関連をインストールする

yum -y install httpd php php-mysql php-mbstring mysql-server

phpMyAdminの設置を/var/www/htmlの配下とする

cd /var/www/html

プログラムをダウンロードする

wget https://files.phpmyadmin.net/phpMyAdmin/4.0.10.10/phpMyAdmin-4.0.10.10-all-languages.tar.gz

解凍する

tar zxvf phpMyAdmin-4.0.10.10-all-languages.tar.gz

圧縮ファイルは削除

rm -f zxvf phpMyAdmin-4.0.10.10-all-languages.tar.gz

アタックされないように、フォルダー名を変更(dbtool)する

mv phpMyAdmin-4.0.10.10-all-languages dbtool

設置したサーバで
確認用のmysqlを起動し、アカウントを追加する

mysqlを起動する

service mysqld start

ログインしてみる

mysql -u root

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>

rootのパスワードを設定
rootpassword
を、パスワードを設定する

mysql> update mysql.user set password=password('rootpassword') where user = 'root';
mysql> flush privileges;         ← 変更を有効にする
mysql> exit;

phpMyAdmin設定ファイルを設置する

cd /var/www/html/dbtool
cp config.sample.inc.php config.inc.php

ApacheとMysqlの起動を確認のため、再起動する

service httpd restart
service mysqld restart

phpMyAdminにアクセスし、動作を確認する
mysqlに設定した、ユーザとPassを設定し「実行」を押す

xxx.xxx.xxx/dbtool

他のサーバにアクセスする場合
config.inc.phpファイルの
31行目あたりのhostにIPまたはホスト名を設定する

cd /var/www/html/dbtool
vi config.inc.php

編集モード(i)に入る
31行目あたりを変更

//$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['host'] = 'xxx.xxx.xxx.xxx';

ESC:wq
で、格納終了する

複数のサーバにアクセスする場合
config.inc.phpファイルの27行から66行目までを
複写し、それぞれのhost名を設定する

cd /var/www/html/dbtool
sed -n '1,66p' config.sample.inc.php > config.dumy.inc.php
sed -n '27,66p' config.sample.inc.php >> config.dumy.inc.php
sed -n '67,$p' config.sample.inc.php >> config.dumy.inc.php
cp config.dumy.inc.php config.inc.php

もし、4つのサーバに接続するなら

cd /var/www/html/dbtool
sed -n '1,66p' config.sample.inc.php > config.dumy.inc.php
sed -n '27,66p' config.sample.inc.php >> config.dumy.inc.php
sed -n '27,66p' config.sample.inc.php >> config.dumy.inc.php
sed -n '27,66p' config.sample.inc.php >> config.dumy.inc.php
sed -n '67,$p' config.sample.inc.php >> config.dumy.inc.php
cp config.dumy.inc.php config.inc.php

として、HostにIPまたは、Host名を設定する

新しいConoHaで確認用サーバを立ち上げる

既存のサーバの確認用として
新しいサーバを立ち上げてみる

既存のサーバから、コンテンツを複写してみます

1,VPSサービスを登録する
ConoHaのサービスは、CentOS 6.6 64bit
SSHキーを使用
とします。

接続許可ポート IPv4
全てのチェックを外し
SSH,メール(25/110/143/465/587/993/995)
にチェックを入れる
ネームタグに分かりやすい文言を入れ
作成する

2,SSHで接続を確認する
サイドメニュー[サーバ]>アカウント(作成した)を選択>[VPS設定]

から、作成したサーバのIPアドレスを確認し
端末から

ssh -i /home/xxxx/key-2015-0x-xx-0x-xx.pem root@xxx.xxx.xxx.xxx

で、SSHに接続する
xxx.xxx.xxx.xxxには、新しいIPを
key-2015-0x-xx-0x-xx.pem
は、公開キーをローカルにダウンロードし
属性を
-r——–
にしておきます。

3,Webサーバ設置(apache)
httpdがインストール済か確認する

httpd -v

-bash: httpd: コマンドが見つかりません

httpdをインストールする

yum -y install httpd

インストールが完了したら、状態を確認し

service httpd status

httpd is stopped

Apacheを起動する

service httpd start

ブラウザより確認

http://xxx.xxx.xxx.xxx  ← IPアドレス

Apacheの画面を確認する

http://xxx.xxx.xxx.xxx/test1.htm  ← IPアドレス

エラー画面を確認する

Not Found
The requested URL /test1.htm was not found on this server.
Apache/2.2.15 (CentOS) Server at xxx.xxx.xxx.xxx Port 80

テストコンテンツを作成する

echo "<html><hr>hello<hr></html>" > /var/www/html/test1.htm

再度アクセスする

http://xxx.xxx.xxx.xxx/test1.htm  ← IPアドレス

正しく表示される


hello


PHPテストコンテンツを作成する

echo "<?php phpinfo(); ?>" > /var/www/html/test1.php

アクセスする

http://xxx.xxx.xxx.xxx/test1.php  ← IPアドレス

画面にそのまま、表示される(TestFirstぽくやってみる)

phpがインストール済か確認する

php -v

-bash: php: コマンドが見つかりません

phpをインストールする

yum -y install php

もう一度

php -v

今度は、

PHP 5.3.3 (cli) (built: Jul  9 2015 17:39:00) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

コンテンツを表示してみる

http://xxx.xxx.xxx.xxx/test1.php  ← IPアドレス

やはり、ソースのまま、表示される
Apacheを再起動する

service httpd restart

再度アクセスしてみる

http://xxx.xxx.xxx.xxx/test1.php  ← IPアドレス

うまく表示された

コンテンツをサーバ間で複写する

rsync -a usrexx@xxx.xxx.xxx.xxx:/var/www/html/ /var/www/html/

サーバ間の複写なので、高速です

Webからコンテンツの動作確認を行う

timezoneのエラーが発生

Warning: strftime(): It is not safe to rely on the system's timezone settings

エラーがでたので、date.timezoneを修正

/etc/php.ini

date.timezone = Asia/Tokyo
を、
date.timezone = Asia/Tokyo
に、変更する

date.timezoneを探す

grep -n date.timezone /etc/php.ini

945:; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
946:;date.timezone =

下の946行目

一応、内容を確認して

sed -n '946p' /etc/php.ini

行指定で変更し

sed -i -e '946c\date.timezone = Asia/Tokyo' /etc/php.ini

再度確認する

sed -n '946p' /etc/php.ini

Apachを再起動し

service httpd restart

エラーがなくなったかを確認する

MDB2 Error: not found
のエラーになった

ライブラリィーを追加する

yum -y install php-mysql
yum -y install php-mbstring
service httpd restart

エラーがでなくなったか
Webで、確認する

未入力変数警告の表示停止対策
Notice: Undefined variable: xxxx in
と、表示される部分を非表示にする

ファイルの
/etc/php.ini
中の
error_reporting = E_ALL & ~E_DEPRECATED

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
に変更する

grep -n 'error_reporting =' /etc/php.ini

513:error_reporting = E_ALL & ~E_DEPRECATED

513行目なので

sed -n '513p' /etc/php.ini

で、確認し、行指定で変更し

sed -i -e '513c\error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED' /etc/php.ini

(行数を間違えないように)

修正後、再度確認し

sed -n '513p' /etc/php.ini

Apachを再起動し、Webでエラーがでなくなったかを確認する

service httpd restart

新しいConoHaでfilezillaで接続する

あらかじめ、キーを登録する

編集>設定>接続>SFTP>鍵ファイルを追加
変換しますか
yes

よく利用するフォルダーへ格納する

参考
https://www.conoha.jp/conoben/archives/9290

ホスト新規登録

ホスト IP を設定
プロトコール:SFTP
ログオンの種類:通常
ユーザ:xxxx
パスワード:xxxxx

新しいConoHaでSSHで接続する

コントロールパネルより、公開キーをダウンロードする

ダウンロードは1回だけなので、
一度、ダウウンロードした場合は、ローカルで複写し
端末へ移動する

例:
/home/(ユーザ)/key-2015-05-xx-xx-xx.pem

属性を、
所有者:アクセス 読み込み専用
グループ:なし
その他:なし
にする

端末より

ssh -i /home/(ユーザ)/key-2015-05-xx-xx-xx.pem root@xxx.xxx.xxx.xxx

新しいConoHaでメールサーバを立ち上げる

新しいConoHaでメールサーバを立ち上げる

1,VPSサービスを登録する
ConoHaのサービスは、CentOS 6.6 64bit
SSHキーを使用
とします。

接続許可ポート IPv4
全てのチェックを外し
SSH,メール(25/110/143/465/587/993/995)
にチェックを入れる
ネームタグに分かりやすい文言を入れ
作成する

2,SSHで接続を確認する

ssh -i /home/xxxx/key-2015-0x-xx-0x-xx.pem root@xxx.xxx.xxx.xxx

3,dovecotとpostfixの設定を一括で行う

dovecotをインストール

yum -y install dovecot

postfixの設定ファイルを変更

作業用データと(例:main.cf2)
バックアップを取る(例:main.cf3)

cd /etc/postfix/

cp main.cf main.cf2
cp master.cf master.cf2

cp main.cf main.cf3
cp master.cf master.cf3

ホスト名の設定を行う
xxxxx.com
は、設定のホスト名にする

sed -i -e '76c\myhostname = xxxxx.com' main.cf2
sed -i -e '83c\myhostname = xxxxx.com' main.cf2

設定ファイルを一括で変更する

sed -i -e '99c\myorigin = $mydomain' main.cf2
sed -i -e '116c\inet_interfaces = all' main.cf2
sed -i -e '119c\inet_protocols = ipv4' main.cf2
sed -i -e '164c\mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain' main.cf2
sed -i -e '264c\mynetworks = 192.168.0.0/23,127.0.0.0/8' main.cf2
sed -i -e '419c\home_mailbox = Maildir/' main.cf2
sed -i -e '569c\smtpd_banner = $myhostname ESMTP unknown' main.cf2
sed -i -e '$a\smtpd_sasl_auth_enable = yes' main.cf2
sed -i -e '$a\smtpd_sasl_local_domain = $myhostname' main.cf2
sed -i -e '$a\smtpd_recipient_restrictions =' main.cf2
sed -i -e '$a\ permit_mynetworks' main.cf2
sed -i -e '$a\ permit_sasl_authenticated' main.cf2
sed -i -e '$a\ reject_unauth_destination' main.cf2
sed -i -e '$a\mailbox_size_limit = 1073741824' main.cf2
sed -i -e '$a\smtpd_use_tls = yes' main.cf2
sed -i -e '$a\smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt' main.cf2
sed -i -e '$a\smtpd_tls_key_file = /etc/pki/tls/private/server.key' main.cf2
sed -i -e '$a\smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache' main.cf2
sed -i -e '$a\smtpd_tls_session_cache_timeout = 3600s' main.cf2
sed -i -e "17,20s/#//" master.cf2

diff main.cf main.cf2 > diffpostfix.txt
diff master.cf master.cf2 >> diffpostfix.txt

変更内容を確認

cat diffpostfix.txt

問題がなければ変更上書きする

cp main.cf2 main.cf

上書きの確認にyで答える

cp master.cf2 master.cf

上書きの確認にyで答える

正しく複写できたか確認する
diffがなければOK

diff main.cf main.cf2
diff master.cf master.cf2

dovecotの設定ファイルを変更

cd /etc/dovecot/conf.d

cp 10-mail.conf 10-mail.conf2
cp 10-auth.conf 10-auth.conf2
cp 10-ssl.conf 10-ssl.conf2
cp 10-master.conf 10-master.conf2

cp 10-mail.conf 10-mail.conf3
cp 10-auth.conf 10-auth.conf3
cp 10-ssl.conf 10-ssl.conf3
cp 10-master.conf 10-master.conf3

sed -i -e '30c\mail_location = maildir:~/Maildir' 10-mail.conf2
sed -i -e '9c\disable_plaintext_auth = no' 10-auth.conf2
sed -i -e '97c\auth_mechanisms = plain login' 10-auth.conf2

sed -i -e "19s/#//" 10-master.conf2
sed -i -e '20i    ssl = no' 10-master.conf2
sed -i -e "23,24s/#//" 10-master.conf2
sed -i -e '41c\    port = 0' 10-master.conf2
sed -i -e "44,45s/#//" 10-master.conf2
sed -i -e "89,91s/#//" 10-master.conf2
sed -i -e '91i    user = postfix' 10-master.conf2
sed -i -e '92i    group = postfix' 10-master.conf2
sed -i -e "6s/#//" 10-ssl.conf2
sed -i -e '12c\ssl_cert = </etc/pki/dovecot/certs/server.crt' 10-ssl.conf2
sed -i -e '13c\ssl_key = </etc/pki/dovecot/private/server.key' 10-ssl.conf2

diff 10-mail.conf 10-mail.conf2 > diffdovecot.txt
diff 10-auth.conf 10-auth.conf2 >> diffdovecot.txt
diff 10-ssl.conf 10-ssl.conf2 >> diffdovecot.txt
diff 10-master.conf 10-master.conf2 >> diffdovecot.txt

変更内容を確認

cat diffdovecot.txt

問題がなければ変更上書きする

cp 10-mail.conf2 10-mail.conf

上書きの確認にyで答える

cp 10-auth.conf2 10-auth.conf

上書きの確認にyで答える

cp 10-ssl.conf2 10-ssl.conf

上書きの確認にyで答える

cp 10-master.conf2 10-master.conf

上書きの確認にyで答える

正しく複写できたか確認する
diffがなければOK

diff 10-mail.conf 10-mail.conf2
diff 10-auth.conf 10-auth.conf2
diff 10-ssl.conf 10-ssl.conf2
diff 10-master.conf 10-master.conf2

4,SSLキーの作成

server.keyを作成し
パスワードを設定する
(パスワードxxxxxxは忘れないように)

cd /etc/pki/tls/certs
make server.key

Enter pass phrase:xxxxxxxx←パスコード入力
Verifying – Enter pass phrase:xxxxxxxx←パスコード再入力

opensslにパスワードを設定

openssl rsa -in server.key -out server.key

先ほど設定したパスワード(xxxxxxxx)を設定
Enter pass phrase for server.key:xxxxxxxx←パスコード入力
writing RSA key

server.csrを作成

make server.csr

Country Name (2 letter code) [XX]:JP(例:JP)
State or Province Name (full name) [](例:Tokyo)
Locality Name (eg, city) [Default City]:(例:Shinjuku)
Organization Name (eg, company) [Default Company Ltd]:(例:xxxx.com)
Organizational Unit Name (eg, section) []:(例:admin)
Common Name (eg, your name or your server’s hostname) []:(例:xxxx.com)
Email Address []:(例:webmaster@xxxx.com)
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:(空)
An optional company name []:(空)

openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650

所定のフォルダーに複写

cp /etc/pki/tls/certs/server.crt /etc/pki/dovecot/certs/server.crt
cp /etc/pki/tls/certs/server.key /etc/pki/dovecot/private/server.key
cp /etc/pki/tls/certs/server.key /etc/pki/tls/private/server.key

複写されたことを、確認

diff /etc/pki/tls/certs/server.crt /etc/pki/dovecot/certs/server.crt
diff /etc/pki/tls/certs/server.key /etc/pki/dovecot/private/server.key
diff /etc/pki/tls/certs/server.key /etc/pki/tls/private/server.key

saslauthdを起動

chkconfig saslauthd on && service saslauthd start

5,ドメイン名の設定を行う

ドメイン名は、お名前.comなどで、
DNS登録は、お名前.com側に、
ConoHaのDNSを登録

お名前側で、
ドメインNavi
ネームサーバの設定にて、
他のネームサーバを使用から
ConoHaのDNSサーバを設定する

お名前で取得したドメイン名をConoHa側に登録
新規ドメインの場合
サイドメニュー[DNS]>[+追加]
登録済の場合
サイドメニュー[DNS]>[登録済ドメイン選択]
属性追加または編集
・A(通常)   XXX.XXX.XXX.XXX
・MX      ポイント先 xxx.com(ドメイン名) 優先度10
・TXT     v=spf1 +ip4:xxx.xxx.xxx.xxx ~all

VPS設定の
IPアドレス 逆引きホスト名にドメイン名を登録する
サイドメニュー[サーバ]
対象VPS選択
[VPS設定]>[逆引きホスト名]右編集アイコン選択
ドメイン登録

6,Hostnameの変更

hostname

で、現状を確認
xxx.xxx.xxxx.xxx
IPで表示される

設定ファイルを変更する

vi /etc/sysconfig/network

i(挿入モード)で、変更
変更前
HOSTNAME=localhost.localdomain

変更後
HOSTNAME=xxxx.com
に変更
:wq Enter で終了

サーバを再スタート

shutdown -r now

または、
ConoHaのコントロールパネルで、再起動ボタンを押す

再起動後、変更されたか確認
再起動のため、SSHは切断されるため、
しばらくしてから、再度接続する

hostname

で、確認
xxxx.com
設定内容に変更された事を確認

7,メールアカウントの作成
メールアカウントを作成します
メール用のユーザとパスワードを設定

ユーザの追加

useradd userxxxx ← 新規ユーザ名

パスワード設定

passwd userxxxx

ユーザー userxx のパスワードを変更。
新しいパスワード:xxxxx ← パスワードを設定
新しいパスワードを再入力してください:xxxxx ← 確認で再度入力
passwd: 全ての認証トークンが正しく更新できました。

8,メールポートの開放
ConoHa
コントロールパネルから開放を設定

9,サービスの起動

service postfix restart
service dovecot start

10,OS再起動時、サービスの自動起動設定

chkconfig dovecot on

11,送信確認

mail xxxx@xxxx.com  ← 確認できるメールアドレスを指定

Subject:メールテストです ←題名を入力 
メールの送信確認を行います ← 本文を入力
よろしくお願いします
. ← .のみで、本文終了

送信されたかの確認
(rootの場合、root@ドメイン で送信されます)

メールアカウントで送信確認

ユーザに切り替える

su xxxxxx ← ユーザ名
mail xxxx@xxxx.com  ← 確認できるメールアドレスを指定

Subject:メールテストです ←題名を入力 
メールの送信確認を行います ← 本文を入力
よろしくお願いします
. ← .のみで、本文終了

送信されたかの確認
(ユーザ名 xxxx@ドメイン で送信されます)

rootに戻り

exit

外部から、作成した、メールアカウントに
メールを送信し、
メールが届くか確認する

外部から、作成アカウントのメールを送信する

メールが届いているか確認する

ls /home/(ユーザ名)/Maildir/new

参考;
メールを受信しないと
/home/(ユーザ名)/Maildir/
のフォルダーは作成されない

外部のメールソフトで接続すると
受信のメールは
/Maildir/new
から
/Maildir/cur
へ移動する

届いたメールの内容を確認

cat /home/(ユーザ名)/Maildir/new/xxxxx.Vfdyyyy.xxx.com:2

telnetで確認

telnetをインストール

yum install -y telnet

localhost ポート 25で接続

telnet localhost 25

Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 xxxxx.com ESMTP unknown
HELO xxxxxx.com ← 入力
250 xxxxx.com
MAIL From: userxx@xxxxx.com ← 送信元を入力
250 2.1.0 Ok
RCPT To:userxx@gmail.com ← 宛先を入力
250 2.1.5 Ok
DATA ← データ入力指定
354 End data with .
よろしくお願いします ← データ入力
. ← .でデータ入力終了を指定
250 2.0.0 Ok: queued as 93735A0D5E
quit← 終了入力
221 2.0.0 Bye
Connection closed by foreign host.

パスワード設定を確認
user_name\0user_name\0user_pass
の中の
user_name
user_pass
を、実際に置き換えて入力

perl -MMIME::Base64 -e 'print encode_base64("user_name\0user_name\0user_pass");'

dXNlcl9uYWXXXXXQB1c2VyX3BFertD=

パスコードを確認

telnet localhost 25

Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 xxxxx.com ESMTP unknown
EHLO localhost ← localhostで指定
250-xxxxx.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN dXNlcl9uYWXXXXXQB1c2VyX3BFertD= 調べたパスコードをはりつける
235 2.7.0 Authentication successful
quit← 終了入力
221 2.0.0 Bye
Connection closed by foreign host.

・235 2.7.0 Authentication successful
にならない場合、
503 5.5.1 Error: authentication not enabled
などの場合

サービスの起動を確認

service postfix status
service dovecot status
service saslauthd status

変更した設定ファイル、その他、を正しく複写したか
を確認

cd /etc/postfix/
diff main.cf main.cf2
diff master.cf master.cf2
cd /etc/dovecot/conf.d
diff 10-mail.conf 10-mail.conf2
diff 10-auth.conf 10-auth.conf2
diff 10-ssl.conf 10-ssl.conf2
diff 10-master.conf 10-master.conf2
diff  /etc/pki/tls/certs/server.crt /etc/pki/dovecot/certs/server.crt
diff  /etc/pki/tls/certs/server.key /etc/pki/dovecot/private/server.key
diff  /etc/pki/tls/certs/server.key /etc/pki/tls/private/server.key

などを確認して下さい
diffで、表示がなければ、正しく表示されている
もし、複写の忘れがあれば、複写し再起動をする

service postfix restart
service dovecot restart
service saslauthd restart

サービスの自動起動の設定を確認
(ランレベル 2,3,4,5がONになっているか

chkconfig --list postfix
chkconfig --list dovecot
chkconfig --list saslauthd

自動起動時設定がなければ設定

chkconfig dovecot on
chkconfig saslauthd on

server.crt
server.key
を、一応確認

ls /etc/pki/tls/certs/server.crt -l
ls /etc/pki/dovecot/certs/server.crt -l
ls /etc/pki/tls/certs/server.key -l
ls /etc/pki/dovecot/private/server.key -l
ls /etc/pki/tls/private/server.key -l

12,メーラからの動作確認
メーラへの設定
Thunderbirdの場合

受信サーバ IMAP XXXX.com 993 SSL/TLS 通常のパスワード認証
送信サーバ SMTP XXXX.com 465 SSL/TLS 通常のパスワード認証

で、設定を行う

Ubuntu でsublimetxt3 をインスツール

Ubuntu 14。04にSublimeText3をインストールする

■SublimeText3をインストールする
端末より

sudo add-apt-repository -y ppa:webupd8team/sublime-text-3

sudo apt-get update; sudo apt-get install -y sublime-text-installer

で、インスツール

■Package Controlのインストール
https://sublime.wbond.net/installation
より、バージョン(Sublime Text 3)のコード(Python code)をコピー

View>ShowContral
で、下部の入力フィールドに貼り付け、リターンする

コマンドパレット(ctr+shift+p)から、
Package Controlを、指定できるようになる

■漢字入力
日本語入力対応方法
mozcとemacs-mozcをインストール

sudo apt-get install ibus-mozc emacs-mozc

Sublime Textで、(ctr+shift+p)にてコマンドパレットを開き、
Package Control:Add Repositoryを選択し、
下部コンソールへ
https://github.com/yasuyuky/SublimeMozcInput
を入力(リポジトリを追加)

Sublime Textで、(ctr+shift+p)にてコマンドパレットを開き、
Package Control:Install Packageを選択し
SublimeMozcInputを選択し
インストール

日本語入力の切り替えを
ctrl+spaceに変更するために
Preferences -> Key Bindings – User
から[]の中に

{ "keys": ["ctrl+space"], "command":"toggle_mozc"},

を追加し、保存(ctr+s)

ctrl+spaceで、漢字変換ができることを確認

■サイドバー表示

view>SideBar>open files
にて、左に開いたファイルのフォルダーとファイルを表示できる

■追記
インストールは
https://qiita.com/Migly_A/items/f1f9871ea7a13103571c
を参考に、Ubuntuは、上記サイトより、
一括で最新がインストール
日本語化ができました。

新しいConoHaでメールサーバを立ち上げる

新しいConoHaでは、メールサーバのサービスも加わりましたが
以前と同じように、独自にメールサーバを立ち上げてみました。

手順
0,VPSサービスの前提
1,SSHで接続を確認する
2,dovecotをインストール
3,FileZillaにて接続を確認する
4,Postfixの設定ファイルの編集
5,Dovecotの設定ファイルの変更
6,SSLキーの作成
7,ドメイン名の設定を行う
8,Hostnameの変更
9,メールアカウントの作成
10,メールポートの開放
11,サービスの起動
12,OS再起動時、サービスの自動起動設定
13,送信確認
14,メーラからの動作確認
となります。

0,VPSサービスの前提
ConoHaのサービスは、CentOS 6.6 64bit
SSHキーを使用
とします。

1,SSHで接続を確認する
ssh -i /home/xxxx/key-2015-0x-xx-0x-xx.pem

2,dovecotをインストール
yum -y install dovecot

3,FileZillaにて接続を確認する

作業用フォルダを作成する

サブフォルダ
postfix
dovecot

を作成する

/etc/postfix/main.cf
/etc/postfix/master.cf

/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/conf.d/10-ssl.conf
/etc/dovecot/conf.d/10-master.conf
をダウンロードする

4,Postfixの設定ファイルの編集
すでに、Postfixは、インストール済なため、
Postfixの設定ファイルの編集を行います

# vi /etc/postfix/main.cf

76行目近くを編集
:76 Enter

変更前
myhostname = virtual.domain.tld

i(挿入モード)
変更後
myhostname = xxxxx.com

83行目近くを編集
変更前
mydomain = domain.tld
変更後
mydomain = xxxxx.com

99行近く、先頭の#を削除
変更前
#myorigin = $mydomain
変更後
myorigin = $mydomain

116行近く
変更前
#inet_interfaces = localhost

変更後
inet_interfaces = all

119行近く
変更前
inet_protocols = all

変更後
inet_protocols = ipv4

164行近く
変更前
#mydestination = $myhostname, localhost.$mydomain, localhost

変更後
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

264行近く
変更前
#mynetworks = 168.100.189.0/28, 127.0.0.0/8

変更後
mynetworks = 192.168.0.0/23,127.0.0.0/8

419行近く、コメントをはず
変更前
#home_mailbox = Maildir/
変更後
home_mailbox = Maildir/

569行近く、コメント解除して $mail_name を unknownに
変更前
#smtpd_banner = $myhostname ESMTP $mail_name
変更後
smtpd_banner = $myhostname ESMTP unknown

最終行に以下を追加

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 reject_unauth_destination
mailbox_size_limit = 1073741824

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

[esc]:wq
で、終了

# vi /etc/postfix/master.cf

17行ちかく
変更前
#smtps inet n – n – – smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject

変更後
smtps inet n – n – – smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

5,Dovecotの設定ファイルの変更
10-mail.confを変更
vi /etc/dovecot/conf.d/10-mail.conf
i(挿入モード)で、編集
30行近く、先頭の「#」を削除し、設定ファイルを指定
変更前
#mail_location =
変更後
mail_location = maildir:~/Maildir
[esc]:wq
で、終了

vi /etc/dovecot/conf.d/10-auth.conf
10-auth.confを編集
9行付近のコメントの#削除し、yesをnoに
変更前
#disable_plaintext_auth = yes
変更後
disable_plaintext_auth = no

97行付近の末尾に login を追加
変更前
auth_mechanisms = plain
変更後
auth_mechanisms = plain login
[esc]:wq
で、終了

vi /etc/dovecot/conf.d/10-master.conf
10-master.confを、編集

17行
変更前
inet_listener imap {
#port = 143
}
inet_listener imaps {
#port = 993
#ssl = yes
}
変更後
inet_listener imap {
port = 143
ssl = no
}
inet_listener imaps {
port = 993
ssl = yes
}

38行目
変更前
service pop3-login {
inet_listener pop3 {
#port = 110
}
inet_listener pop3s {
#port = 995
#ssl = yes
}
}

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

88行目
変更前
# Postfix smtp-auth
#unix_listener /var/spool/postfix/private/auth {
# mode = 0666
#}

変更後
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

:wq Enter で終了

vi /etc/dovecot/conf.d/10-ssl.conf
10-ssl.confを、編集

12行目
変更前

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

6,SSLキーの作成

server.keyを作成し
パスワードを設定する
(パスワードxxxxxxは忘れないように)

cd /etc/pki/tls/certs
make server.key
Enter pass phrase:xxxxxxxx
Verifying – Enter pass phrase:xxxxxxxx

opensslにパスワードを設定
openssl rsa -in server.key -out server.key
先ほど設定したパスワード(xxxxxxxx)を設定
Enter pass phrase for server.key:xxxxxxxx
writing RSA key

server.csrを作成
make server.csr

Country Name (2 letter code) [XX]:JP(例:JP)
State or Province Name (full name) [](例:Tokyo)
Locality Name (eg, city) [Default City]:(例:Shinjuku)
Organization Name (eg, company) [Default Company Ltd]:(例:xxxx.com)
Organizational Unit Name (eg, section) []:(例:admin)
Common Name (eg, your name or your server’s hostname) []:(例:xxxx.com)
Email Address []:(例:webmaster@xxxx.com)
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:(空)
An optional company name []:(空)

openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650

所定のフォルダーに複写

cp /etc/pki/tls/certs/server.crt /etc/pki/dovecot/certs/server.crt
cp /etc/pki/tls/certs/server.key /etc/pki/dovecot/private/server.key
cp /etc/pki/tls/certs/server.key /etc/pki/tls/private/server.key

saslauthdを起動

chkconfig saslauthd on && service saslauthd start

7,ドメイン名の設定を行う

ドメイン名は、お名前.comなどで、
DNS登録は、お名前.com側に、
ConoHaのDNSを登録

お名前側で、
ドメインNavi
ネームサーバの設定にて、
他のネームサーバを使用から
ConoHaのDNSサーバを設定する

お名前で取得したドメイン名をConoHa側に登録
属性追加
・A(通常)   XXX.XXX.XXX.XXX
・MX      ポイント先 xxx.com(ドメイン名) 優先度10
・TXT     v=spf1 +ip4:xxx.xxx.xxx.xxx ~all

VPS設定の
IPアドレス 逆引きホスト名にドメイン名を登録する

8,Hostnameの変更
hostname
で、現状を確認
xxx.xxx.xxxx.xxx
IPで表示される

設定ファイルを変更する
vi /etc/sysconfig/network

i(挿入モード)で、変更
変更前
HOSTNAME=localhost.localdomain

変更後
HOSTNAME=xxxx.com
に変更
:wq Enter で終了

サーバを再スタート
shutdown -r now
または、
ConoHaのコントロールパネルで、再起動ボタンを押す

再起動後、変更されたか確認

hostname
で、確認
xxxx.com
設定内容に変更された事を確認

9,メールアカウントの作成
メールアカウントを作成します
メール用のユーザとパスワードを設定

ユーザの追加
useradd userxxxx ← 新規ユーザ名

パスワード設定
passwd userxxxx

xxxxx ← パスワードを設定
xxxxx ← 確認で再度入力

10,メールポートの開放
ConoHa
コントロールパネルから開放を設定

11,サービスの起動
service postfix restart
service dovecot restart

12,OS再起動時、サービスの自動起動設定
chkconfig dovecot on

13,送信確認

mail xxxx@xxxx.com ← 確認できるメールアドレスを指定

Subject:メールテストです ←題名を入力 
メールの送信確認を行います ← 本文を入力
よろしくお願いします
. ← .のみで、本文終了

送信されたかの確認
(rootの場合、root@ドメイン で送信されます)

メールアカウントで送信確認

ユーザに切り替える
su xxxxxx ← ユーザ名
mail xxxx@xxxx.com ← 確認できるメールアドレスを指定

Subject:メールテストです ←題名を入力 
メールの送信確認を行います ← 本文を入力
よろしくお願いします
. ← .のみで、本文終了

送信されたかの確認
(ユーザ名 xxxx@ドメイン で送信されます)

作成した、アカウント(ユーザ)に、メールが届いているか確認

メールが届いているか
#ls /home/(ユーザ名)/Maildir/new

届いたメールの内容を確認
#cat /home/(ユーザ名)/Maildir/new/xxxxx.Vfdyyyy.xxx.com:2

telnetで確認

telnetをインストール
yum install -y telnet

localhost ポート 25で接続

# telnet localhost 25

Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 xxxxx.com ESMTP unknown
HELO xxxxxx.com ← 入力
250 xxxxx.com
MAIL From: user02@xxxxx.com ← 送信元を入力
250 2.1.0 Ok
RCPT To:userxx@gmail.com ← 宛先を入力
250 2.1.5 Ok
DATA ← データ入力指定
354 End data with .
よろしくお願いします ← データ入力
. ← .でデータ入力終了を指定
250 2.0.0 Ok: queued as 93735A0D5E
quit
221 2.0.0 Bye
Connection closed by foreign host.

パスワード設定を確認

perl -MMIME::Base64 -e ‘print encode_base64(“user_name\0user_name\0user_pass”);’
dXNlcl9uYWXXXXXQB1c2VyX3BFertD=

パスコードを確認

telnet localhost 25 ← 25で接続
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 xxxxx.com ESMTP unknown
EHLO localhost ← localhostで指定
250-xxxxx.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN dXNlcl9uYWXXXXXQB1c2VyX3BFertD= 調べたパスコードをはりつける
235 2.7.0 Authentication successful
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

・235 2.7.0 Authentication successful
にならない場合、
server.crt
server.key
のパスがあっているか
パスにファイルがあるか
saslauthdが起動しているか
(chkconfig saslauthd on && service saslauthd start)
などを確認して下さい

14,メーラからの動作確認
メーラへの設定
Thunderbirdの場合

受信サーバ IMAP XXXX.com 993 SSL/TLS 通常のパスワード認証
送信サーバ SMTP XXXX.com 465 SSL/TLS 通常のパスワード認証

で、設定を行う

***error: There is no valid email in the directories at /usr/local/bouncehammer/bin/mailboxparser line 174 error対策

処理するメールがないと下記エラーがでます

***error: There is no valid email in the directories at /usr/local/bouncehammer/bin/mailboxparser line 174

これを避けるまめに、フォルダー内にデータがある時だけ、
(新規メールが届いている時だけ)
処理を行うようにする

if ls  /フォルダーのバス/*.* > /dev/null 2>&1
  then
   :  フォルダーにデータがある場合に処理する
fi

機能を追加する

vi /usr/local/autobonuc.sh

#!/bin/sh
 if ls  /home/user0xxx/Maildir/new/*.* > /dev/null 2>&1
  then
/usr/local/bouncehammer/bin/mailboxparser -g --log /home/user031/Maildir/new --remove
/usr/local/bouncehammer/bin/logger -c --remove

for f in /usr/local/bouncehammer/var/log/*.log
do
  /usr/local/bouncehammer/bin/databasectl --update $f
done

fi

ConoHa BounceHammer メールの自動登録

Cronで、BounceHammerへメールの自動登録を行う

vi /usr/local/autobonuc.sh
#!/bin/sh
/usr/local/bouncehammer/bin/mailboxparser -g --log /home/user0xxx/Maildir/new --remove
/usr/local/bouncehammer/bin/logger -c --remove

for f in /usr/local/bouncehammer/var/log/*.log
do
  /usr/local/bouncehammer/bin/databasectl --update $f
done

:wq
chmod +x /usr/local/autobonuc.sh

crontab -l

crontab -e
MAILTO="xxxx@gmail.com"
*/2 * * * * /usr/local/autobonuc.sh

処理するメールがない場合のエラー対策 →