タグ別アーカイブ: linux

Scientific Linux 6.1からさくらのメールボックスへメールを転送させる

この記事は2011/11に掲載されたものです。
記事の内容が古くなっている為、現状と異なる可能性があります。

cronやシステム管理メールを自分のメールアドレスへ転送する方法をよく忘れてしまうので
メモをとっておきます。

SL6をほぼ最小構成にてインストールした場合、mailコマンドが入っていない場合があるようです。
そこでまずはメールを送信できる状態にします。

yum install mailx cyrus-sasl cyrus-sasl-plain cyrus-sasl-lib

SL6のメールコマンドはmailxパッケージを使用するようです。実態はmailxにシンボリックリンクが張られています。

ls -al /bin/ | grep mail
lrwxrwxrwx   1 root root    5 11月  9 08:45 2011 mail -> mailx
-rwxr-xr-x   1 root root 370K 11月 24 03:53 2010 mailx

また、cyrus-saslパッケージはメール転送時のSMTP認証に使用するので同時にインストールしておきました。

そしてCentOS5系からの違いとしてMTAがpostfixになっているようですので、postfixの設定を変更していきます。
まずは転送先の設定から。

cd /etc/postfix
vi authinfo

<~>を各自の情報で書き換えます。

[<メールサーバアドレス>]:587 <ユーザ名([email protected])>:<パスワード>

認証情報を書いた後はDB化を行っておきます。

postmap authinfo

postfixの設定ファイルを書き換えてローカルのメールをさくらのメールボックスへ転送するようにします。

vi main.cf
myhostname = <ホスト名>
mydomain = <ドメイン名>
myorigin = $myhostname
mydestination = $myhostname, localhost.localdomain, localhost.$mydomain, localhost
relayhost = [<メールサーバアドレス>]:587

smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/authinfo
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = CRAM-MD5 DIGEST-MD5 LOGIN PLAIN
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt

設定が終わったらpostfixに設定を再読込させます。

service postfix reload

次にローカルのメールを個人のメールアドレスに転送する為にaliasesを編集します。

自分のサーバではrootを個人アカウントに転送した後、個人のメールアドレスに転送させています。

vi /etc/aliases
root:       <ユーザ名>
<ユーザ名>: <転送先メールアドレス>

編集が終わったら適応させるためにnewaliasコマンドを発行しておきます。

newaliases

最後にテストとしてメールを送信させて、受信できることを確認します。

echo test | mail root
echo test | mail <ユーザ名>

gitにpushしたwebサイトを自動的に同期させる

この記事は2011/4に掲載されたものです。
記事の内容が古くなっている為、現状と異なる可能性があります。

earthquake_jpに関連して作業したので備考録としてメモ。

前提

gitのリモートリポジトリとHTTPサーバが同一のサーバに存在している状態です。

別サーバで行う場合はgit cloneを行う際にパス無し秘密鍵でcloneして
おかないと上手く動作しないと思われます。

処理の流れ

開発者 → コミット → プッシュ → post-receive → Web API → git pull

失敗

  • 最初はpost-receiveでpullを発行しようとしたが、HTTPサーバとgitosisの権限が異なる。
  • sudoを発行してみたが、エラーが発生して処理が行えない。

結果

  • post-receiveはWeb APIへとアクセスする。
  • Web APIはHTTPサーバの権限で動作する。
  • Web APIではシェルスクリプトを実行する。
  • HTTPサーバの権限でpullが行われる。

リポジトリ.git/hooks/post-receive

#!/bin/sh
wget -q -O - http://APIのURL

API(update.php)

<?php
$cmd = dirname(__FILE__) . '/update.sh';
$res = system($cmd);
if (false === $res) {
    echo "NG\n";
} else {
    echo "OK:{$res}\n";
}

シェルスクリプト(update.sh)

#!/bin/sh
cd /var/www/html/
/usr/bin/git --git-dir=/var/www/html/.git pull

post-receive、update.shは実行権限を付加するのを忘れずに。update.phpはweb上から実行可能であれば問題ない。

念の為、127.0.0.1か自身のグローバルIPでのみアクセス可能にしている。