? いろんなことをしてみるブログ(予定)
FC2ブログ

独自ドメインに対応しました

FC2ブログがいつの間にやら独自ドメインに対応していたのですね・・・(有料ですがね)

ってわけで使ってみよう!
といういつものノリで・・・

・ドメインの取得はFC2ドメイン
ここで取得したドメインじゃないと使えませんorz

(フツーにムームーで取得したあとで気づくwww。確りと確認しなきゃいけないですね・・・)

・取得後、DNSの設定を済ます
ドメインの管理画面で「FC2サービスで使用」「代行DNS」「独自のDNS」とあるので好きなの選択

・その後、ブログの管理画面で独自ドメインの設定をする

で、あれれれぇ?
うちは得意の独自DNSでやってるんだけどコレどう設定すんの?

ってわけでここでつまづきそうになる
一度DNSの設定をFC2サービスに戻してひと通り設定
その後digコマンドを叩いてみた

↓叩いた結果

[*** ~]$ dig @mdns1.fc2.com try-blog.com

; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6_2.2 <<>> @mdns1.fc2.com try-blog.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23213
;; flags: qr aa rd; QUERY: 1, ANSWER: 11, AUTHORITY: 3, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;try-blog.com. IN A

;; ANSWER SECTION:
try-blog.com. 86400 IN CNAME p2x.blog.fc2.com.
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 199.116.177.153
p2x.blog.fc2.com. 86400 IN A 199.116.177.153
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 208.71.104.113
p2x.blog.fc2.com. 86400 IN A 208.71.104.113

;; AUTHORITY SECTION:
fc2.com. 86400 IN NS mdns1.fc2.com.
fc2.com. 86400 IN NS mdns2.fc2.com.
fc2.com. 86400 IN NS mdns3.fc2.com.

;; ADDITIONAL SECTION:
mdns1.fc2.com. 86400 IN A 208.71.107.72
mdns2.fc2.com. 86400 IN A 208.71.107.73
mdns3.fc2.com. 86400 IN A 208.71.107.74

;; Query time: 110 msec
;; SERVER: 208.71.107.72#53(208.71.107.72)
;; WHEN: Wed Jul 25 18:58:35 2012
;; MSG SIZE rcvd: 325



で、どうやらCNAMEみたいです
と、いうわけでDNSの設定を戻して自DNSで設定を済ませたとさ・・・

・じゃ、CNAMEさえ設定すればFC2で取得しなくてもいいんじゃね??
→確りとエラーページに飛ばされた。そう旨い話は無いですねwww

有料プランじゃないと駄目だけどコレはコレでいいかも知れません

2012/07/25 19:02 | 雑記COMMENT(2)TRACKBACK(0)  TOP

dovecot-sieveでメール振り分け

メールの振り分けにdovecot-sieveを利用してみる

Ⅰ インストール
  dovecot-pigeonholeをインストールする

yum install dovecot-pigeonhole



Ⅱ dovecot各種設定(変更箇所のみ記載)
  20-managesieve.conf(/etc/dovecot/conf.d/20-managesieve.conf)

protocols = $protocols sieve



  90-sieve.conf(/etc/dovecot/conf.d/90-sieve.conf)

plugin {
sieve = /var/mail/virtual/%d/%n/.dovecot.sieve
sieve_dir = /var/mail/virtual/%d/%n/sieve
sieve_global_dir =
sieve_global_path = /etc/dovecot/sieve/default.sieve
}


  sieveのディレクトリはdovecot/postfixの設定に合わせて
  その後以下コマンド打ち込み

mkdir /etc/dovecot/sieve
echo "" > /etc/dovecot/sieve/default.sieve
chown -R vmail.vmail /etc/dovecot/sieve


  15-lda.conf(/etc/dovecot/conf.d/15-lda.conf)

protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins quota sieve
}


  20-lmtp.conf(/etc/dovecot/conf.d/20-lmtp.conf)

protocol lmtp {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins quota sieve
}



  auth-userdb(/var/run/dovecot/auth-userdb)のパーミッションを変更

chmod 666 /var/run/dovecot/auth-userdb


  以下エラー対応

Jul 16 18:16:29 ***: lda: Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=10000(vmail) egid=10000(vmail) missing +r perm: /var/run/dovecot/auth-userdb, euid is not dir owner)


  所有者をvmailにするんでもいいかもしれない

  ここまで済んだらdovecotの再起動

service dovecot restart



Ⅲ postfixの設定
  main.cf(/etc/postfix/main.cf)
  ローカル配送をdovecotに変更

mailbox_command = /usr/libexec/dovecot/deliver
dovecot_destination_recipient_limit = 1
local_transport = dovecot
virtual_transport = dovecot



  master.cf(/etc/postfix/master.cf)
  dovecot-sieveを利用するように最終行へ追記

dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -m INBOX/${extension}



  で、postfix再起動

service postfix restart



Ⅳ 振り分けてみよう
  こんな感じの振り分けをしてみる
  ・test@example.comからのメールを「test」フォルダへ振り分ける
事前準備として振り分け先のフォルダはMaildir以下に作成しておく

mkdir .INBOX.test
chmod 700 .INBOX.test
chown vmail:vmail .INBOX.test


として、さらにクライアントから見れるようにMaildir/subscriptionsに作成したフォルダを追記しておく

INBOX.test


このファイルに記入するときに頭の.(ドット)を入れるとクライアントからは見れないので注意
  (thunderbirdだけかもしれないけど・・・)

  作成先は各ユーザーのディレクトリへ.dovecot.sieveを作成
  (例)/var/mail/virtual/example.com/test/.dovecot.sieve

require "fileinto";
if address :is "from" "test@example.com" {
fileinto "INBOX.test";
} else {
keep;
}


  こちらも同様、フォルダ名の頭にあるドットは入れない。振り分けされないでエラーログがたんまり溜まるから

  こんなかんじで設定するとメールが来た時に振り分けてくれます。。。

  念のため.dovecot.sieveの所有者をvmailに変更しておく

  因みに件名にtestが含まれる場合は・・・

require "fileinto";
if header :matches "Subject" "test*" {
fileinto "INBOX.test";
} else {
keep;
}



  みたいな感じでやってあげるとOK(最後の*はワイルドカード)

  幾つもの条件を組み合わせるときは
  elseifじゃなくて elsifになります。。。
  振り分けのルールは日本語もおk

2012/07/16 18:03 | COMMENT(0)TRACKBACK(0)  TOP

メール鯖を構築してみる[postfix dovecot]

久しぶりの更新ネタ

今回はさくらのVPSでメールサーバを立ててみたので備忘録がてらに・・・

鯖OSは「CentOS 6.2 x86_64」
デフォルトでpostfixがインストールされているものとして進める
すべてバーチャルメールボックスとする
インストールするdovecotはバージョン2
取り敢えずドメイン名は「example.com」ですすめる


Ⅰ dovecotとcyrus-sasl-md5をインストール
  (SMTP AUTHでCRAM-MD5を利用するため)

yum -y install dovecot cyrus-sasl-md5



Ⅱ バーチャルメールボックス管理用ユーザーを作成
  以下のコマンドをすべて打つ

groupadd -g 10000 vmail
useradd -u 10000 -g 10000 -d /var/mail/virtual -r -s /sbin/nologin vmail
mkdir /var/mail/virtual
chown vmail:vmail /var/mail/virtual
chmod 700 /var/mail/virtual



  ログインする必要は無いので/sbin/nologinとする
  ユーザー名(vmail)、UID/GID(10000/10000)は別になんだっていいけどあとの設定の際各自自分に当てはめる

Ⅲ バーチャルメールボックスようアカウント作成
  パスワードのハッシュ値を利用するので先に生成しておく

doveadm pw



  Enter new password:とRetype new password:で2階パスワードを入力する
  すると

{CRAM-MD5}dd59f669267e9bb13d42a1ba57c972c5b13a4b2ae457c9ada8035dc7d8bae41b


  みたいな文字列が出来上がるので控える

  /etc/dovecot/passwdを作成する
  そこにさっき作ったパスワードとユーザー名を入力

test@example.com:{CRAM-MD5}dd59f669267e9bb13d42a1ba57c972c5b13a4b2ae457c9ada8035dc7d8bae41b



  ↑2行になってしまってるけど実際は1行で
  ユーザー名とハッシュパスの間は:(コロン)で区切る
  testのとこはなんでもOK


  /etc/postfix/vmailboxにメアドと保存ディレクトリの対応を記述する
  メアドとディレクトリの間はタブで空ける

test@example.com     example.com/test/Maildir/



  最後必ず改行する(エラーが出る)
  設定が終わったらpostmapコマンドを打つ

postmap /etc/postfix/vmailbox



  ユーザーの追加/削除したときは必ずコレをして、postfixの再起動をして下さい

  エイリアス設定は転送をしたい時に設定するがここでは省きます
  /etc/postfix/virtualで設定できるので必要なときは各自で

  設定していないけどこちらもpostmapコマンドを打つ(コレをしないとエラー出る)

postmap /etc/postfix/virtual



Ⅳ SSL証明書、鍵の作成

cd /etc/pki/tls/certs
openssl req -new -x509 -nodes -days 365 -out mail.crt -keyout mail.key
~中略~
Country Name (2 letter code) [XX]:
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) []:*.example.com
Email Address []:



  Common NameはMXレコードを登録するドメインでワイルドカードを利用

  セキュリティ証明書(.der)作成

openssl x509 -in mail.crt -outform der -out mail.der



Ⅴ postfixの設定
  まず、main.cf(/etc/postfix/main.cf)から

  変更するとこだけ記載(キリがない)

inet_interfaces = all   ←コメントアウト解除する
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost  ←コメントアウトする



#mydestination = $myhostname, localhost.$mydomain, localhost   ←コメントアウト
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
mydestination =


mydestinationは空白で設定する。以下エラー対策

warning: do not list domain *** in BOTH mydestination and virtual_mailbox_domains



smtpd_banner = $myhostname ESMTP unknown



  一番下に以下追記

smtpd_client_restrictions =
reject_rbl_client all.rbl.jp,
reject_rbl_client bl.spamcop.net

# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous

# TLS
smtpd_tls_security_level = may
smtpd_tls_key_file = /etc/pki/tls/certs/mail.key
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt

# Virtual
virtual_mailbox_domains = example.com
virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
virtual_alias_maps = hash:/etc/postfix/virtual



  example.comは各自置き換えで

  迷惑メール受信拒否しない場合は

smtpd_client_restrictions =
reject_rbl_client all.rbl.jp,
reject_rbl_client bl.spamcop.net



  を消すかコメントアウトしておく

  次にmaster.cf(/etc/postfix/master.cf)でサブミッション関係の設定

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 smtpd_recipient_restrictions=permit_sasl_authenticated,reject_unauth_destination



  上4つはコメントアウト解除して最後の行は追記

ここまで済んだらpostfixを再起動する

service postfix restart



Ⅵ dovecotの設定
  dovecot.conf(/etc/dovecot/dovecot.conf)の最後にSMTP AUTH関係の設定をする

# Postfix SMTP Auth
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
group = postfix
mode = 0660
user = postfix
}
}



  10-mail.conf(/etc/dovecot/conf.d/10-mail.conf)でメール保存場所の設定をする


mail_location = maildir:~/Maildir



  10-ssl.conf(/etc/dovecot/conf.d/10-ssl.conf)でSSL証明書、鍵の設定する
  もともと記述されている部分を変更する

ssl_cert = </etc/pki/tls/certs/mail.crt
ssl_key = </etc/pki/tls/certs/mail.key



  10-auth.conf(/etc/dovecot/conf.d/10-auth.conf)
  以下について変更

auth_mechanisms = cram-md5 plain login



  一番下のやつ、コメントアウト解除

!include auth-passwdfile.conf.ext
!include auth-static.conf.ext



auth-passwdfile.conf.ext(/etc/dovecot/conf.d/auth-passwdfile.conf.ext)
  もともとあるものすべてコメントアウトして以下追記

passdb {
driver = passwd-file
args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}



  auth-static.conf.ext(/etc/dovecot/conf.d/auth-static.conf.ext)
  以下を追記

userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/virtual/%d/%n
}



これで完了、dovecotを起動

service dovecot start



Ⅶ iptables設定
  メール送受信に必要なポートを開けてあげる

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT



  iptables再起動

service iptables restart



Ⅷ DNSの設定
DNSは利用するドメインのAレコードとMXレコードを適切に設定する

こんな感じで出来ればOK

2012/07/16 13:02 | COMMENT(0)TRACKBACK(0)  TOP

iptables log anlyzerを入れるテスト

既にmysql、httpd、ulogがインストールされていることが前提

1.iptables log anlyzerをダウンロードする。

wget http://jaist.dl.sourceforge.net/sourceforge/iptablelog/iptablelog-v0.9.tar.bz2



2.解凍、webのディレクトリへ入れる

tar jxvf iptablelog-v0.9.tar.bz2
mv iptablelog/ /var/www/html



3.DB作成
mysqlへログイン

mysql -u root -p


※以降MySQLのコマンド

DB作成/ユーザー作成

create database iptablelog; 
grant all on iptablelog.* to iptableloguser@localhost identified by 'パスワード'



でMySQLから出る

exit




iptablelogの初期化

cat /var/www/html/iptablelog/conf/iptables.mysql | mysql -u iptableloguser -p iptablelog



こんなエラーが出たら・・・

ERROR 1064 (42000) at line 12: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(14) NOT NULL,
static enum('Y','N') NOT NULL default 'N',
PRIMARY KEY (ip)
' at line 4



iptables.mysqlを編集
vi /var/www/html/iptablelog/conf/iptables.mysql

以下編集箇所のみ記載

13行目
ip int(10) unsigned NOT NULL default '0',

ip int(10) NOT NULL default '0',
(赤字部分削除)

15行目
resolved timestamp(14) NOT NULL,

resolved timestamp NOT NULL,
(赤字部分削除)

TYPE=MyISAMをENGINE=MyISAMへすべて置換する


コレでもう一回

cat /var/www/html/iptablelog/conf/iptables.mysql | mysql -u iptableloguser -p iptablelog



で少し時間かかって完了する。

4.php.iniを開いて

vi /etc/php.ini



short_open_tag = Off

short_open_tag = On

5.loganlyzerの設定
設定ファイル作成、編集

cp /var/www/html/iptablelog/conf/config.php.default /var/www/html/iptablelog/conf/config.php
vi /var/www/html/iptablelog/conf/config.php



編集箇所のみ
$db_user="MySQLのユーザー";

$db_password="パスワード";

$file_base="/path/to/iptablelog"; # i.e. "/var/www/html/iptablelog"

$file_base="/var/www/html/iptablelog"; # i.e. "/var/www/html/iptablelog"

で完了

6.ホスト名解決用のスクリプト配置、編集

cp /var/www/html/iptablelog/conf/iptables_resolve.default /etc/cron.hourly/iptables_resolve
vi /etc/cron.hourly/iptables_resolve



$iptablelog_path = "/var/www/html/iptablelog"; # Change this

iptablelogの配置に合わせて適宜


db_connect("localhost","dbname","dbuser", "dbpass"); # Change these db settings
こちらも適宜


7.ファイル修正

vi /var/www/html/iptablelog/reports/index.php



require_once("conf/config.php");
↑コメントアウト or 削除

一番下の

pageFooter();
?>

を削除

で終わり

2012/05/01 16:39 | 未分類COMMENT(0)TRACKBACK(0)  TOP

ulogをインストール

iptables log anlyzerを利用するのに必要なのでインストール

1.ulogをダウンロード

wget ftp://ftp.netfilter.org/pub/ulogd/ulogd-1.24.tar.bz2



2.解凍及び移動

tar jxvf ulogd-1.24.tar.bz2
cd ulogd-1.24



3.インストール

./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/local/lib --with-mysql
make
make install



もし、make/make installでエラー出るようなら以下サイト見ながらヤッてみる
http://ameblo.jp/zero0max/entry-10362733006.html


4.起動スクリプトを配置

cp ulogd.init /etc/rc.d/init.d/ulogd



5.ulog設定編集

vi /etc/ulogd.conf



plugin="/usr/local/lib/ulogd/ulogd_BASE.so"
plugin="/usr/local/lib/ulogd/ulogd_LOCAL.so"   ←追加

plugin="/usr/local/lib/ulogd/ulogd_LOGEMU.so"  ←コメントアウト

#plugin="/usr/local/lib/ulogd/ulogd_MYSQL.so"  ←コメント解除


MySQL関連
[MYSQL]
table="ulog"
pass="MySQL ユーザーのパスワード"
user="iptableloguser"
db="iptablelog"
host="localhost"


で、ulogd起動

/etc/rc.d/init.d/ulogd start



自動起動化

chkconfig --add ulogd



iptablesのルールにログを取るように記述

-A RH-Firewall-1-INPUT -j ULOG --ulog-nlgroup 1 --ulog-prefix REJECT
REJECTの手前に配置する場合はこんな感じ

2012/05/01 16:38 | 未分類COMMENT(0)TRACKBACK(0)  TOP