oinume journal

Scratchpad of what I learned

自宅サーバからso-netのSMTPにリレーする

そういえばISPso-netに変えてからSMTPの設定変更してなかったのでメモ。

 

まずは /etc/postfix/main.cf に以下を追記。

 

relayhost = [mail.so-net.ne.jp]:587

smtp_sasl_type = cyrus

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/so-net_password

smtp_sasl_security_options = noanonymous

smtp_sasl_mechanism_filter = PLAIN

 

 

/etc/postfix/so-net_passwordはこんな感じ。

 

[mail.so-net.ne.jp]:587 @.so-net.ne.jp:

 

 

 

$ sudo chmod 640 /etc/postfix/so-net_password

$ sudo postmap /etc/postfix/so-net_password

$ sudo /etc/init.d/postfix restart

 

でおk。あとはメール送信のテストする。

 

 

echo test | mail *****@gmail.com

 

これでメールが送られていれば成功。

 

[tmkm-amazon]4873111951[/tmkm-amazon]

sshで初回ログイン時に"The authenticity of host 'host' can't be established..."を聞かれないようにする設定

sshで ~/.ssh/known_hosts にないマシンにアクセスする場合

The authenticity of host 'your-host (127.0.0.1)' can't be established.
RSA key fingerprint is 7f:cd:9a:d8:1d:9a:47:3b:97:e7:8e:c3:81:c8:2e:97.
Are you sure you want to continue connecting (yes/no)?

と聞かれます。社内用のサーバなどの場合、そんなに厳しく接続先のマシンをチェックしなくてもよいのであれば、sshクライアント側の ~/.ssh/configに下記の設定を書くことでこれを聞かれないようにできます。

host 192.168.1.* 
  StrictHostKeyChecking no

~/.ssh/config ファイルのパーミッションは 600 じゃないと怒られるので

$ chmod 600 ~/.ssh/config

としておきます。これで大量のサーバに最初に初めてssh接続した時の "yes" を入力するだけの簡単な仕事から解放されます!

サーバの設定ファイルの管理方法

最近このブログの置き場所を自宅サーバからlinodeに移しました。それにあたってサーバの設定ファイルを git リポジトリで管理して linode に同期するようにしてみました。今日はそんなことをつらつらと書いてみたいと思います。

 

まず、なぜにサーバの設定ファイルをバージョン管理する必要があるのか、ということですが

 

 

  • ファイルを任意の時点の状態に簡単に戻すことができる

 

 

  • いつどんな修正をしたのか簡単に見れる

 

 

 

というのがメリットだと思ってます。あと、自分の場合はGitリポジトリがあるディレクトリを丸ごとバックアップ取っているので、リポジトリで管理しておくと自動的にバックアップされるというのがメリットとしてあります。色々熟考されて作られた設定ファイルは大事な財産だったりします。

 

Gitリポジトリの構成

僕は以下のような構成でGitリポジトリに設定ファイルを置いています。

 

 

savacan

|

`-- napoli.lampetty.net

|

`-- files

`-- etc

|-- apache2

| |-- error-document.conf

| |-- icon.conf

| |-- language.conf

| |-- log-env.conf

| `-- mod_php.conf

|-- init.d

| |-- mysql

| |-- reverse_proxy_nginx

| `-- svscan

|-- logrotate.d

| `-- reverse_proxy_nginx

|-- my.cnf

`-- nginx

|-- htpasswd

|-- mime.types

`-- reverse_proxy_nginx.conf

 

 

TOPレベルの"savacan" というのは適当につけた名前ですが(*1)、簡単に解説するとこんな感じでしょうか。

 

 

  • savacan配下にサーバ毎に napoli.lampetty.net のようなディレクトリを用意

 

 

  • その下の files ディレクトリに設定ファイルを置く

 

 

  • 設定ファイルは実際にサーバに置くパスと同じものに

 

 

 

そして、この files 配下のファイルをサーバに rsync して、各ファイルの symlink を張るスクリプトを書いています。symlink を張るという形を取ることで、サーバにアップすれば最新のファイルに置き換わるのが良いところかなぁと。あと実際にサーバ上に配置するパス通りに管理しておくのもわかりやすくて気に入っています。また、おそらく様々な用途のサーバがあるような環境だと、savacan配下に作るディレクトリは"db_master","reverse_proxy" のような役割にしておいて、db_master/files 配下のファイルはマスタDBサーバにrsyncする、みたいな運用にすればいいのかなと思っています。

 

最近は puppet も盛り上がってますし、puppet 使えば幸せになれることも多々あると思いますが(*2)、シンプルに運用したいのであればこのぐらいでもいいのかなぁと思っています。

 

 

 

  • *1)サーバ管理 -> 鯖管 -> savacan

 

 

  • *2)ファイルの権限設定したい場合とか

 

 

 

[tmkm-amazon]4774145017[/tmkm-amazon]