月: 2011年5月

centOSのVPSサーバでメールサーバ(POSTFIXとDOVECOT)設定した。-その2-

続けて、DOVECOT(POPサーバ)の設定をする。
やはり、インストールしたところから。

[root@server]# cp /etc/dovecot.conf /etc/dovecot.conf.org
[root@server]# nano /etc/dovecot.conf

2箇所だけ編集。

  1. protocols =pop3
  2. mail_location = maildir:~/Maildir

保存してとじたら、
[root@server]# service dovecot start
[root@server]# chkconfig dovecot on
[root@server]# chkconfig –list dovecot

参考にさせていただきました。
http://kajuhome.com/dovecot.shtml
http://uayeb.com/?page_id=183
http://centos.server-manual.com/centos5_postfix.html
Serversman@VPS メールサーバー構築(PostfixとDevecot)

これで、一応の設定が全て終わったので、一旦、サーバを再起動。
不要サービスを停止しておくなら、このタイミングで。
(参考)http://tanaka.sakura.ad.jp/archives/001065.html

最後にセキュリティを考慮して、最初にしなかったファイアウォールの設定を忘れないように。
一応のセキュリティは、考慮されているので、ファイアウォールによるポートの設定は、全ての動作確認が取れてからでいいかと思います。

*********************************

centOSのVPSサーバで独自ドメインを取ってDNS設定する(BIND)

BINDでDNSサーバを立てる。
NSDのほうが余計なプロセスがなくて軽いらしいけど、centOSでNSDのパッケージを探してモニョモニョするのって結構面倒そうなので(yumが使えない)、あっさりBINDで。どうせそんな大規模サイト突っ込むわけじゃないし、と自分のヘタレに言い訳はしておく。

それで、先にGO DADDYでドメインを1つ取ったんだけど、そっちは、これまた先に試用初めてしまった、SERVERSMAN@VPSのプランに設定してしまったので、そんでもって、さくらのVPSと動作を比べてどっちか残す、みたいな感じで試用したいので(まあ、安いからしばらくどっちも残してもいいけど;そうするとLIVE COMMERCEは1つでいいから、サーバ設定バーチャルとか色々しないといけないかも・・・めんどっ!)、新たに、お名前.comで.comドメインを取りました。

前書き長いですけど、ここの主な流れは、
・独自ドメイン取る(できれば、自前DNSへの移行が簡単なところで、色々融通効くところがいいですね)
・VPSでDNSサーバをインストールしてCONFファイルの設定する。
・DNSの名前解決の元になるZONEファイルを作って、AレコードとかMXレコードとか設定していく
・自前DNSが公式に認められるようにレジストラに登録する(→このステップがさ~どこにもかいてないのよぉ~。全然DNS引き込めなくて参ったわ~)

独自ドメイン取るのは業者によって違うし、お名前.comで簡単に取れたので、じゃあ、SSHでイジイジの方から始めます。
先に、BINDのインストールが済んだところからです。(yum install bind)
BIND本体と「bind-chroot」「caching-nameserver」の3つがちゃんとインストールされているか確認しておきます。忘れてたら、一番最初の設定についてのエントリーを確認。

bind-chrootをインストールしたので、「/var/named/chroot/」が、BINDのルートディレクトリになるので、注意。

1)「/var/named/chroot/etc/named.conf」を編集・設定する

named.confのオリジナルは別のところにあるけど、bind-chrootを入れているので、編集ファイルとディレクトリに注意。1個目のワナですな。
[root@server]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
※「named.caching-nameserver.conf」をリネームコピーして使います。このファイルの中身は、殆どオリジナルのnamed.confと同じなので、どっちをベースにしてもいいけど、実際に配置したいファイルと同じ階層のファイルを触るほうが使いやすいと思います。

[root@server]# nano /var/named/chroot/etc/named.conf

  1. // listen-on port 53 { 127.0.0.1; }; (コメントアウトする=無効)
    //listen-on-v6 port 53 { ::1; }; (コメントアウトする=無効)
  2. version “unknown”; (その下に追記)
  3. directory “/var/named”; (確認)
    dump-file “/var/named/data/cache_dump.db”; (確認)
    statistics-file “/var/named/data/named_stats.txt”; (確認)
    memstatistics-file “/var/named/data/named_mem_stats.txt”; (確認)
  4. query-source port 53; (コメント取る=有効)
    query-source-v6 port 53; (コメント取る=有効)
  5. allow-query { localhost; localnets; };
  6. これだけ全部追記。※forwardersの閉じカッコ「};」忘れないように。
    forwarders{
    xxx.xxx.xxx.xx; (プライマリDNSのIPアドレス=VPSのIP:例 210.157.1.184;)
    xxx.xxx.xxx.xx; (セカンダリDNSのIPアドレス=レジス炉らなどのサービスで借りる:例 210.157.1.185;)
    };
    ※ここの2つのIPアドレスは、1つ目はプライマリDNSのIPアドレス、つまり、今回BINDでDNSサーバを立てているVPSのIPアドレスを入力。2つ目は、ドメインを取得したサービス(今回だったらお名前.comのドメイン管理画面でセカンダリネームサーバを探す。そしてそれを、whoisサービスなどにかけて、そのサーバのIPアドレスを調べる。セカンダリは、無料のレンタルサービスやレジストラが用意しているものなど色々あるので、利用できるものであればOK。(レジストラにはたいてい利用できるものがある)

    これを、http://www.cman.jp/network/support/ip.htmlここのサービスで調べるとIPアドレスがわかるから。

  7. view localhost_resolver の{};内の最後の行(=「include “/etc/named.rfc1912.zones”;」の次の行)に1行追記。○○○.comは取得したドメイン名。
    include “/etc/named.○○○.com.zone”;
  8. 以下の記述(「view”internal”」から「};」まで)を全部、CONFファイルの最後に追記。
    —————————————-
    view “internal” {
    match-clients { localnets; };
    match-destinations { localnets; };
    recursion yes;
    include “/etc/named.rfc1912.zones”;
    include “/etc/named.○○○.com.zone”;
    };

    view “external” {
    match-clients { any; };
    match-destinations { any; };
    recursion no;
    include “/etc/named.○○○.com.zone.wan”;
    };
    —————————————-
    保存して閉じる。

2)CONFファイルで定義した2つのZONEファイルを新規作成する

[root@server]# nano /var/named/chroot/etc/named.○○○.com.zone

—————————————-
zone “○○○.com” {
type master;
file “○○○.com.db”;
};
zone “**.***.***.in-addr.arpa” {
type master;
file “**.***.***.in-addr.arpa.db”;
};
—————————————-
※○○○.comは、取得したドメイン名。
※**.***.***は、VPSのIPアドレスの頭から3桁を逆転にして記述。例えば、IPが、012.123.456.78だったとしたら、ここは、456.123.012となる。
保存して閉じる。

[root@server]# nano /var/named/chroot/etc/named.○○○.com.zone.wan

—————————————-
zone “○○○.com” {
type master;
file “○○○.com.db.wan”;
allow-query { any; };
};
—————————————-
保存して閉じる。

3)ZONEファイルにヒモ付けられるDB2ファイルを作成する

[root@server]# nano /var/named/chroot/var/named/○○○.com.db

—————————————-
$TTL 86400
@ IN SOA ○○○.com. root.○○○.com.(
2011050101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ○○○.com.
IN MX 10 ○○○.com.
@ IN A ***.***.***.**
*   IN A ***.***.***.**
—————————————-
※ドメインの後ろの「.」を見落とさないようにつけること。
※@と*のAレコードには、VPSのIPアドレスを記述する。
※シリアルは「西暦+月+日+2ケタの数字を入れる(シリアル)」これで各DNSが最新かどうか、一致してるかどうかを検証しているので、同じときに編集したZONEファイルは必ず同じシリアルにしておくこと。

[root@server]# nano /var/named/chroot/var/named/**.***.***.in-addr.aarpa.db
※「**.***.***」は、VPSのIPの紙桁を逆順にする。(named.○○○.com.zoneファイルに記載したfile名と同じ)

—————————————-
$TTL 86400
@ IN SOA ○○○.com. root.○○○.com.(
2011050101 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ○○○.com.
** IN PTR ○○○.com.
—————————————-
※最後の行の「**」はVPSのIPアドレスの最後の数値。

[root@server]# nano /var/named/chroot/var/named/○○○.com.db.wan

—————————————-
$TTL 86400
@ IN SOA ns1.○○○.com. root.○○○.com.(
2011050101 ; Serial
7200 ; Refresh
7200 ; Retry
2419200 ; Expire
86400 ) ; Minimum
IN NS ns1.○○○.com.
IN MX 10 ○○○.com.
ns1 IN A ***.***.***.**
@ IN A ***.***.***.**
www IN A ***.***.***.**
ftp IN A ***.***.***.**
mail IN A ***.***.***.**

○○○.com. IN TXT “v=spf1 a mx ~all”
—————————————-
※このファイルが外向けのレコードを記載したファイルになるので、必要なAレコード、MX、CNAMEなどはこの中に入れていく。(@、www、ftp、mailなどのAレコードとネームサーバのMXレコード)
※とりあえず上記が必要な設定。
※注意するのは、このファイルには、ネームサーバの名前がでてくること。
「ns1.○○○.com」→頭のns1は任意につけてかまわない。「dns1」とか色々。DNSサーバは1つのドメインに対して通常2つ(1つ目が落ちたときにアクセスできなくなるのを防ぐため)指定するので、1つは自前、1つはドメインを取得したサービスのDNSサーバなどにして、ドメインに設定することが多い。別に3つ指定しても4つ指定してもかまわない。(ドメインへのDNSサーバのヒモ付けは、ドメインの管理会社のWEB画面などから設定する)

4)設定ファイル、ZONEファイルの所有者をNAMEDに変更する

ここで、お気づきかもしれませんが(つうか、これに気づかずえらい長いこと右往左往しましたわ;)named.confファイルで記述した「named.○○○.com.zone」「named.○○○.com.zone.wan」の2つのファイルが、パスの指定先と保存先が違います。
ので、このままでは、パスが通らず、DNSサーバが起動できません。

ということで。
この2つのファイルへのシンボリックリンクを、named.confで記述した場所(=/etc/ディレクトリ)へ作成します。

[root@server]# ln -s /var/namaed/chroot/etc/named.○○○.com.zone /etc/named.○○○.com.zone
[root@server]# ln -s /var/namaed/chroot/etc/named.○○○.com.zone.wan /etc/named.○○○.com.zone.wan

できたら、念のため、/etc/ディレクトリへ移動して、シンボリックリンクが正しく貼れたか確認。

[root@server]# cd /etc/ →/etc/ディレクトリへ移動。
[root@server]# ls -la →ディレクトリ内のファイルの一覧を表示。

ここで、
・/var/named/chroot/etc/named.conf
・/var/named/chroot/etc/named.○○○.com.zone
・/var/namaed/chroot/etc/named.○○○.com.zone.wan
の3ファイルは、いずれも所有者がルートになっているが、DNSサーバによって使用されるファイルなので、所有グループが、「named」でなければ、DNSサーバが起動できない
はい、またもダダハマり。

[root@server]# chown named:named /var/named/chroot/etc/named.conf
または
[root@server]# chown root:named /var/named/chroot/etc/named.conf
として、所有グループを「named」に変える。所有ユーザはrootでもnamedでも多分OK。(一応namedで動作確認した。)

ここまでできたら、BINDを起動します。
最後に再起動することになるけど、ここまでの設定で、きちんとBINDが起動できる状態になっているか、どこか間違っていないか確認しておくほうが良いので、一旦起動確認。

[root@server]# service named start

再起動の起動オプションのおまじないも忘れずにね!

[root@server]# chkconfig named on
[root@server]# chkconfig –list named

5)さて、ここで、重要な作業が2つ残ってる

ドメインのレジストラのサービス画面で、

・利用するネームサーバの変更登録。
デフォルトは多分レジストラのDNSになってるので、これを、
→自前で立てたDNSサーバ(プライマリDNS)
→ドメインサービス会社等のDNSサーバ(セカンダリDNS)
へ変更する。

・自前で立てたDNSサーバをレジストラに登録してもらう。
→DNSサーバのホスト登録(お名前.comの場合、管理メニューの真ん中くらいの「ホスト登録・変更・削除」メニューからns1.○○○.comをVPSのIPアドレスへ登録。

DNSは通常ドメインに対して、プライマリDNSとセカンダリDNSの2つをヒモ付けて登録します。(前述の通り3つでも4つでもかまわないけど)

自前でDNSサーバを立てたということは、プライマリDNSが自前サーバとなり、セカンダリをどこかで用意しなければなりません。2つ目は別のホストであることが望ましく(1つにしたり、1台のサーバ機で2つのDNSを動かしたりすると、それが落ちたら終わりですよね;)自分で2台のDNSサーバを用意できるならいいのですが、たいていは2台目に困るはず。。。

そこで、ドメインのレジストラのDNSを使用したり、あと、無料のセカンダリサーバレンタルサービスなどもあります。
https://www.xname.org/ などのサービスもありますが、今回はお名前.comでセカンダリが使用できるので、それを使用します。

ドメイン管理画面での設定は省略。
ZONEファイルの変更など、サーバ側の設定とセカンダリのレコード登録のみ備忘しとく。

[root@server]# nano /var/named/chroot/etc/named.○○○.com.zone.wan

「{ };」の間、allow-query{ };の後ろに、
allow-transfer { ***.***.***.** }; →セカンダリサーバのIPアドレスを入れる。

[root@server]# nano /var/named/chroot/var/named/○○○.com.db.wan

IN NS 2nd.dns.com. →ns1.○○○.com. の次の行に、NSレコードとしてセカンダリのドメイン名を記入。

ここで、NAMEDの再起動。

[root@server]# service named restart

最後に、DNSの正引きと逆引きできてるか確認しとく。
しばらくしないと、有効にならないので、ちょっと待つ。

[root@server]# dig ○○○.com →ドメインで正引き
[root@server]# ***.***.***.** →IPアドレスから逆引き

※念のため、公式なドメイン(本LINUX協会など)も引いてみる
dig→jla.linux.or.jp
dig -x→210.171.226.43

これでANSWERの項目に、自分のサーバのドメインまたはIPが出てくれば、OK。
反映されてなければ、もう少し待つ。1日以上おかしな場合は、どっか設定が間違ってると思われる。
仕上げに、DNSの設定問題がないかとか、ちゃんと浸透して行ってるかをチェックしておく。

intoDNS(http://www.intodns.com/)
ここでホスト名を入れると、様々なDNSの値をチェックしてくれます。

参考にさせていただきました。
(DNSサーバ設定について)
http://sakura.off-soft.net/centos/bind_install.html
4.Serversman@VPS DNSサーバー構築(BIND)
http://kajuhome.com/bind.shtml
(DNSサーバ設定後のセカンダリDNSの設定とかレジストラへ登録など)
http://sakura.off-soft.net/centos/onamae_dns.html

*********************************

centOSのVPSサーバでメールサーバ(POSTFIXとDOVECOT)設定した。-その1-

続き。一番面倒なメールサーバの設定だぁ。。。
これも、POSTFIXとDOVECOTがインストール(yum install postfix dovecot)された後から。
長くなるので、先にPOSTFIX(SMTPサーバ)関連から。

1)設定ファイルを編集する。

[root@server]# cp /etc/postfix/main.cf /etc/postfix/main.cf.org →オリジナルの保存のおまじない。
[root@server]# nano /etc/postfix/main.cf

  1. #soft_bounce = no (確認:コメントアウト=無効)
    queue_directory = /var/spool/postfix (確認)
    command_directory = /usr/sbin (確認)
    daemon_directory = /usr/libexec/postfix (確認)
    mail_owner = postfix (確認)
    #default_privs = nobody (確認)
  2. myhostname = mail.○○○.com (自メールサーバ名にしてコメントを取る=有効)
  3. mydomain = ○○○.com (自ホスト名にしてコメントを取る=有効)
  4. myorigin = $myhostname (コメントを取る=有効)
  5. inet_interfaces = all (コメントを取る=有効)
    #inet_interfaces = localhost (コメントアウト=無効)
  6. #proxy_interfaces = (確認:コメントアウト=無効)
    #proxy_interfaces = 1.2.3.4 (確認:コメントアウト=無効)
  7. mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain (不足内容を追記またはコメントを入れ替える)
  8. #local_recipient_maps = unix:passwd.byname $alias_maps (確認:コメントアウト=無効)
    #local_recipient_maps = proxy:unix:passwd.byname $alias_maps (確認:コメントアウト=無効)
    #local_recipient_maps = (確認:コメントアウト=無効)
  9. unknown_local_recipient_reject_code = 550 (確認)
  10. #mynetworks_style = class (確認:コメントアウト=無効)
    #mynetworks_style = subnet (確認※コメントアウトされててもこれがデフォルト)
    #mynetworks_style = host (確認:コメントアウト=無効)
  11. #mynetworks = 168.100.189.0/28, 127.0.0.0/8 (確認:コメントアウト=無効)
    #mynetworks = $config_directory/mynetworks (確認:コメントアウト=無効)
    #mynetworks = hash:/etc/postfix/network_table (確認:コメントアウト=無効)
  12. #relay_domains = $mydestination (確認※コメントアウトされててもこれがデフォルト)
  13. #relayhost = $mydomain (確認:コメントアウト=無効)
    #relayhost = [gateway.my.domain] (確認:コメントアウト=無効)
    #relayhost = [mailserver.isp.tld] (確認:コメントアウト=無効)
    #relayhost = uucphost (確認:コメントアウト=無効)
    #relayhost = [an.ip.add.ress] (確認:コメントアウト=無効)
  14. #relay_recipient_maps = hash:/etc/postfix/relay_recipients (確認:コメントアウト=無効)
  15. #in_flow_delay = 1s (確認:コメントアウト=無効)
  16. #alias_maps = dbm:/etc/aliases (確認:コメントアウト=無効)
    alias_maps = hash:/etc/aliases (確認)
    #alias_maps = hash:/etc/aliases, nis:mail.aliases (確認:コメントアウト=無効)
    #alias_maps = netinfo:/aliases (確認:コメントアウト=無効)
  17. #alias_database = dbm:/etc/aliases (確認:コメントアウト=無効)
    #alias_database = dbm:/etc/mail/aliases (確認:コメントアウト=無効)
    alias_database = hash:/etc/aliases (確認)
  18. #recipient_delimiter = + (確認:コメントアウト=無効)
  19. home_mailbox = Maildir/ (コメントを取る=有効)
  20. #mail_spool_directory = /var/mail (確認:コメントアウト=無効)
    #mail_spool_directory = /var/spool/mail (確認:コメントアウト=無効)
  21. #mailbox_command = /some/where/procmail (確認:コメントアウト=無効)
    #mailbox_command = /some/where/procmail -a “$EXTENSION” (確認:コメントアウト=無効)
  22. #mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp (確認:コメントアウト=無効)
  23. #mailbox_transport = cyrus (確認:コメントアウト=無効)
  24. #fallback_transport = lmtp:unix:/var/lib/imap/socket/lmtp (確認:コメントアウト=無効)
    #fallback_transport = (確認:コメントアウト=無効)
  25. #luser_relay = $user@other.host (確認:コメントアウト=無効)
    #luser_relay = $local@other.host (確認:コメントアウト=無効)
    #luser_relay = admin+$local (確認:コメントアウト=無効)
  26. #header_checks = regexp:/etc/postfix/header_checks (確認:コメントアウト=無効)
  27. #fast_flush_domains = $relay_domains (確認:コメントアウト=無効)
  28. #smtpd_banner = $myhostname ESMTP $mail_name (確認:コメントアウト=無効)
    #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (確認:コメントアウト=無効)
  29. #local_destination_concurrency_limit = 2 (確認:コメントアウト=無効)
    #default_destination_concurrency_limit = 20 (確認:コメントアウト=無効)
  30. debug_peer_level = 2 (確認)
  31. #debug_peer_list = 127.0.0.1 (確認:コメントアウト=無効)
    #debug_peer_list = some.domain (確認:コメントアウト=無効)
  32. debugger_command = (確認)
  33. sendmail_path = /usr/sbin/sendmail.postfix (確認)
  34. newaliases_path = /usr/bin/newaliases.postfix (確認)
  35. mailq_path = /usr/bin/mailq.postfix (確認)
  36. setgid_group = postdrop (確認)
  37. html_directory = no (確認)
  38. manpage_directory = /usr/share/man (確認)
  39. sample_directory = /usr/share/doc/postfix-2.3.3/samples (確認)
  40. readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES (確認)
  41. smtpd_sasl_auth_enable = yes →sasl認証を使う。
    smtpd_sasl_local_domain = $myhostname
    smtpd_sasl_security_options = noanonymous, noplaintext →IDと暗号化されたPW持ってるユーザしか許可しない。
    smtpd_recipient_restrictions = permit_mynetworks,
    permit_sasl_authenticated, reject_unauth_destination
     →メール転送を許可・拒否する範囲。
    smtpd_client_restrictions = permit_mynetworks, reject_rhsbl_client
    rhsbl.ahbl.org, reject_rbl_client spamcop.net, reject_rbl_client
    dynablock.wirehub.net, reject_rbl_client sbl.spamhaus.org,
    reject_unknown_client, permit
     →リストアップしたホストのブラックリストに乗ってるメールは受信しない。自分とブラックリスト外のメールだけ許可。
    broken_sasl_auth_clients = yes
    ※これだけ最後に追記。

※「myorigin = $myhostname」について。これは、今回$mydomainでも基本構わない。メールが受信されたときにその受取ユーザを探しに行くホストを指定している。大規模ネットワークで複数のメールサーバが同ドメイン内にあり、それぞれを検索に行かないといけないような場合は、$mydomainにするが、メールサーバが1つのみの場合は、結果として同じ意味になる。(例:mail1.○○○.com、mail2.○○○.comと複数ある→○○○.com内のメールサーバを全部問い合わせないといけないので、$mydomain。mail.○○○.comのみ→$myhostnameでOK。)
※mynetworkの設定は、何も設定されてない場合(すべたがコメントアウトの場合)、「mynetworks_style = subnet」がデフォルトとなる。ただし、「mynetworks」がいずれかの値でONになっている場合、「mynetworks_style」の値は全て無視される。(=「mynetworks」の値のみが有効)
※「※コメントアウトされててもこれがデフォルト」と注記があるものは、コメントを取ってもコメントアウトしてて、他に設定がない限り、それがデフォルトの設定動作となる。

2)設定ファイル2を編集する。

[root@server]# cp /etc/postfix/master.cf /etc/postfix/master.cf.org →オリジナルの保存のおまじない。
[root@server]# nano /etc/postfix/master.cf

  1. submission inet n – n – – smtpd (コメントを外す=有効)
    -o smtpd_sasl_auth_enable=yes (コメントを外す=有効)
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject (コメントを外す=有効)

3)ユーザのメールディレクトリを作成する。

a)新しいユーザができたときには、自動でメールディレクトリを作るように設定する。

[root@server]# mkdir -p /etc/skel/Maildir/{new,cur,tmp} →ユーザのホームディレクトリの下にメールボックスに関係するディレクトリを作成する。
[root@server]# chmod -R 700 /etc/skel/Maildir/ →メールディレクトリの権限は全てオーナーユーザのみが読み書きできる。

b)既存ユーザのホームディレクトリにもメールボックスを作成する。

・一旦既存ユーザを確認する。(既存ユーザの数と名称が分かっているなら不要)

[root@server]# cd /home/ →/home/ディレクトリへ移る。
[root@server]# ls -la →ディレクトリ内を参照して(ユーザの名前のディレクトリを)見る

ここで、先に作成していたユーザ「namae」くんが発見出来ればOK。
「namae」くんにもメールが送受信できるように、メールボックスを与えてあげましょう。

[root@server]# mkdir -p /home/namae(自分の環境のユーザ名に置き換え)/Maildir/{new,cur,tmp}
[root@server]# chmod -R 700 /home/namae(自分の環境のユーザ名に置き換え)/Maildir/

これだけでは、/Maildir/以下のディレクトリは、作成したrootユーザの所有になっているので、「namae」くんに所有者:グループ変更します。

[root@server]# chown -R namae(自分の環境のユーザ名に置き換え):namae(自分の環境のグループ名に置き換え)/home/nobita/Maildir/

最後に、「namae」くんのメールディレクトリ以下がちゃんと「namae」くん(グループも「namae」くん)の所有になっているか一覧で確認します。

[root@server]# ls -la /home/namae(自分の環境のユーザ名に置き換え)
[root@server]# ls -la /home/namae(自分の環境のユーザ名に置き換え)/Maildir

設定できたら、POSTFIXとSASLAUTHDを起動して、再起動のおまじないをしておきます。

[root@server]# /etc/rc.d/init.d/postfix start
[root@server]# /etc/rc.d/init.d/saslauthd start
※起動。

[root@server]# chkconfig postfix on
[root@server]# chkconfig –list postfix
※POSTFIXの起動レベル設定と確認。

[root@server]# chkconfig saslauthd on
[root@server]# chkconfig –list saslauthd
※SASLAUTHDの起動レベル設定と確認。


※さくらのVPSの場合、sendmailが先にインストールされていて有効になっているので、これをPOSTFIXに切り替えて、SENDMAILをOFFにします。

[root@server]# alternatives –config mta →MTA(SMTPメールサーバ)として登録されているサービス一覧を表示。

「POSTFIX」の番号を入力するか選択し、エンター
念のため上記コマンドで、再度一覧を表示して確認もしとく。

[root@server]# chkconfig sendmail off
[root@server]# chkconfig –list sendmail

SENDMAILがOFFになっていれば、次の再起動で、POSTFIXと入れ替えになります。
※サーバの再起動は、DOVECOTを入れ終わってからにします。

参考にさせていただきました。

(POSTFIXのオプションパラメータについて)
http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html
http://www.postfix-jp.info/trans-2.3/jhtml/BASIC_CONFIGURATION_README.html

(設定について)
http://www.obenri.com/_postfix/relay_settings.html
http://kajuhome.com/postfix.shtml
http://www.obenri.com/_postfix/relay_settings.html

*********************************

centOSのVPSサーバでFTP設定(VSFTPD)した。

FTPサーバの設定をする。
VSFTPDインストールしたところからです。
(yum install vsftpd は完了ね)

取り敢えず、インストールしたら、起動してみてアクセスできるかを先に確認したい。(設定終わってからでも全然いいけど。いや、むしろセキュリティ上その方がいいけど。でも、一応気になるから、先にチェックしとく。不要な場合この手順は飛ばす。)

[root@server]# ftp
ftp> op
(to)000.000.000.000 →IPアドレスかドメイン叩く。今回はまだドメイン設定してないので、IP叩く。
Name(000.000.000.000:root): namae →ユーザ名入れる
Password: →パスワード入れる
230 Login successful. と返ってきたら、接続はOK。
ftp> quit でFTP接続から抜ける。

設定ファイルを編集または作成する。
・/etc/vsftpd/vsftpd.conf (設定ファイル)
・/etc/vsftpd/chroot_list (上位階層にもアクセスを許可するユーザのリスト)
・/etc/vsftpd/user_list  (FTP接続を許可しないユーザのリスト)
・/etc/vsftpd/ftpusers (FTP接続を許可しないユーザのリスト)

user_list とftpusersは、CONFファイルの設定次第で全然リストの意味が変わってくるので注意が必要。
user_list をデフォルトのままで使って、ftpusersは使わないので、この2つは一旦編集はなし。ファイル自体があるかどうかと中身だけ確認しとく。

こちら(http://www.obenri.com/_ftpserver/vsftpdconf01.html)を参考に、設定ファイルをいじるまえには、常にオリジナルのバックアップを取っておくことを癖にする!

まずは、「/etc/vsftpd/vsftpd.conf」を編集します。

[root@server]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org →初期ファイルに末尾に「.org」と付けてオリジナルファイルを保存。
[root@server]# nano /etc/vsftpd/vsftpd.conf  →CONFファイルを編集(上から順にいきますワ)

  1. #anonymous_enable=YES (コメントアウト)
    anonymous_enable=No (追加)
    匿名ユーザは禁止。anonymousFTPは使用しない。
  2. local_enable=YES (確認:作成したLINUXユーザのログイン許可)
  3. write_enable=YES (確認:ユーザのFTPファイル書き込み・アップロードを許可)
  4. local_umask=022 (確認:新規作成のディレクトリは755パーミションになる)
  5. #anon_upload_enable=YES (確認:コメントアウト=無効)
    #anon_mkdir_write_enable=YES (確認:コメントアウト=無効)
    dirmessage_enable=YES (確認:有効 ※ディレクトリにメッセージファイルを置いた場合そのメッセージ内容が表示される。動作には影響ないからどっちでもいい)
  6. xferlog_enable=YES (確認:logを記録する)
  7. connect_from_port_20=YES (確認:ポート20でアクセス ※パッシブモードでアクセスするときのデフォルトポート)
  8. #chown_uploads=YES (確認:コメントアウト=無効)
    #chown_username=whoever (確認:コメントアウト=無効)
  9. #xferlog_file=/var/log/xferlog (コメントを取る=有効にする)
    xferlog_file=/var/log/xferlog
    コメント取って有効にする。「/var/log/vsftpd.log」にFTPのログを保存する。
  10. xferlog_std_format=YES (無効にする)
    xferlog_std_format=NO
    YESにすると、「vsftpd.log」ではないログ(=アナライザーで解析できる形式のログ形式)を保存する設定になる。特殊なログは不要なので、明示的に「NO」としておく。
  11. #chown_uploads=YES (確認:コメントアウト=無効)
    #chown_username=whoever (確認:コメントアウト=無効)
  12. #idle_session_timeout=600 (確認:コメントアウト=無効)
    #data_connection_timeout=120 (確認:コメントアウト=無効)
    どちらも確認のみでOK。コメント取ってもどっちでもいい。ただし、サーバの反応が遅くてセッションタイムアウトが続くようなら、この値を大きくしてコメントアウト。
  13. #nopriv_user=ftpsecure (確認:コメントアウト=無効)
    #async_abor_enable=YES (確認:コメントアウト=無効)
  14. #ascii_upload_enable=YES (コメントを取る=有効にする)
    ascii_upload_enable=YES
  15. #ascii_download_enable=YES (コメントを取る=有効にする)
    ascii_download_enable=YES
    アスキーモードでのアップロード、ダウンロードを許可。
  16. #ftpd_banner=Welcome to blah FTP service.  (確認:コメントアウト=無効)
    ftp接続したユーザにWELCOMEメッセージを表示させたいなら、コメントを取るとFTPサーバのバージョンなどが表示されるようになる。動作には影響ないからどっちでもいい。)
  17. #deny_email_enable=YES (確認:コメントアウト=無効)
    #banned_email_file=/etc/vsftpd/banned_emails (確認:コメントアウト=無効)
  18. chroot_local_user=YES (追記)
    有効にすると、デフォルトでユーザがホームディレクトリより上位階層にFTPで接続するのを禁止する。
  19. #chroot_list_enable=YES (コメントを取る=有効にする)
    chroot_list_enable=YES
    ホームディレクトリより上位階層に移動できるユーザのリストを有効にして、リストに名前のあるユーザのみ認める。(上の設定とセットで考える)
  20. #chroot_list_file=/etc/vsftpd/chroot_list (コメントを取る=有効にする)
    chroot_list_file=/etc/vsftpd/chroot_list
    ※上位階層にアクセスできるユーザのリストの保存場所
  21. #ls_recurse_enable=YES (コメントを取る=有効にする)
    ls_recurse_enable=YES
    ディレクトリごと削除できるようにする
  22. listen=YES (確認:有効)
  23. #listen_ipv6=YES (確認:コメントアウト=無効 IP6使わないから。)
  24. pam_service_name=vsftpd (確認:有効)
    userlist_enable=YES (確認:有効)
    tcp_wrappers=YES (確認:有効)
  25. 以下、追記。
    pasv_promiscuous=YES (パッシブモードを使う)
    use_localtime=YES (サーバのローカルタイムを使用する=日本時間ね。)
    pasv_addr_resolve=YES (パッシブモードで接続先IPアドレスをホスト名から取得する)
    force_dot_files=YES (「.htaqccess」などの非表示ファイルを強制的に表示させる)
    local_root=/var/www/ (通常はユーザのルートディレクトリ。※下に注記する)
    pasv_address=49.212.40.244 (PASVモード接続先IPアドレスが牽けるホストのIPアドレス)
    pasv_min_port=40000 (PASVモード接続時の最小ポート番号:空いてるポートで大体で。)
    pasv_max_port=40030 (PASVモード接続時の最大ポート番号大体で。空いてるポートで大体で。)
    #ssl_enable=YES (SSL使う場合。使うかどうか、ここ保留)
    #rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem (SSL使う場合。使うかどうか、ここ保留)
    #force_local_logins_ssl=NO (SSL使う場合。使うかどうか、ここ保留)
    #force_local_data_ssl=NO (SSL使う場合。使うかどうか、ここ保留)

※「local_root=」:これは、デフォルトだと、ユーザのルートディレクトリにアクセスしてしまうので、「public_html」とかにすると、一般的なWEBサービスみたいに、自分のホームページ公開エリア以上には勝手にFTP接続できませんよ、という設定になる。ブラウザでのアクセスは、http://サバ.com/~onamae/という見慣れたやつ。今回は、アパッチのルートディレクトリ(っていうか、LIVE COMMERCE使うためにサーバを立てているので、便宜上、公開ディレクトリの1つ上の階層)をルートとする。なんで、「/var/www/」です。ちなみに公開ディレクトリは、その下の「/var/www/html/」ですね。

[root@server]# nano /etc/vsftpd/chroot_list

chrootのユーザリストを新規作成する。
FTPで上位階層へのアクセスを認めるユーザ名を1行1名で記入して、保存。
「namae」

長かった。

ここで、FTPサーバの再起動をかけて設定を有効にしたら、FTPクライアントのFILEZILLAで、WINDOWSマシンから、FTP接続テストしてみます。
[root@server]# service vsftpd restart
まだサーバのドメイン設定してないから、IPアドレスで。
接続→OK
上位階層への移動→OK
ファイルのアップロードとか削除→できまへん。はい、乙。

public_htmlなどの、FTPユーザの所有ディレクトリならファイル操作ができるが、/var/www/以下は、ROOTの所有なので、namaeくんでは、ファイル操作ができません。
対応は2つ。
・ROOTでFTPアクセスできるように変更
・該当ディレクトリの所有者をnamaeくんに変更
もちろん2つ目採用で。

[root@server]# chown namae:namae /var/www/
[root@server]# chown namae:namae /var/www/html/

これで、OK。あと/www/以下には、iconsディレクトリとかcgi-binディレクトリとか色々あるけど、取り敢えずCGI使う予定ないし、動作確認は最小から始めたいので、一旦無視で。
FTP設定終了。

念のため、HTMLファイルとJPGファイルをアップロードして、アップロードしたファイルに、ブラウザ経由でアクセスして表示出来てるかも確認しておく。

再起動時の自動起動設定のおまじないも忘れない。

[root@server]# chkconfig vsftpd on
[root@server]# chkconfig –list vsftpd


参考にさせていただきました。

http://www.aconus.com/~oyaji/ftp/vsftpd_rpm.htm
http://centossrv.com/vsftpd.shtml
http://www.orchid.co.jp/computer/linux/vsftp.html

*********************************

VPSを借りた・・・の備忘録(centOSの初期設定とか)

LIVE COMMERCEをテストするために、ドメイン取って、VPSを借りてみた。
自前のテスト環境では、なんかうまくいかなかったので、サーバは外に公開してないとなんかだめなのかな?(単に自分がアホなだけ?)と思い、安いサービスもあるので、取り敢えずは、もう借りちゃえ、みたいな流れです。はい。料金については、GW楽しく(?)遊べるゲームを1つ買ったと思うことにしました。

普通に考えて、めっちゃ設置ハードル高いです。
VPSとか専用サーバでROOT権限もらおうと思ったら、基本、サーバ会社は内容の面倒を見てくれない。
てことは、LIVE COMMERCEをインストールしたい、と思っても、それだけでも一般ユーザにはハードル富士山なのに、例えばPHP・MYSQLのインストールのみならず、場合によっては、FTPサーバやメールサーバ、APACHEなんかも全部自分でインストールして設定して、しまいにDNSサーバなんかも設定しないといけなかったりする。というか、ほぼこのコース。。。
高額なサポート料払うとか専門のPGに依頼するんじゃない限り、サーバ管理できるスキルないとキビシイでしょ。。。それ。

ああ、またボヤいてしまった。
これは取り敢えずの備忘録なのであった。

あとで整理するとして、忘れないために、随時訂正しながら書きこむことにします。
設置LIVE。(違うって?)

1)SSHでROOTログインして、一般ユーザをグループWHEELで作る

先にサーバを日本語に。

[root@server]# nano /etc/sysconfig/i18n
LANG=”ja_JP.UTF-8” →日本語用に書き換える

[root@server]# adduser namae
[root@server]# passwd namae
→パスワード2回→OK
[root@server]# usermod -G wheel namae

2)ROOTログインの禁止とSSHポート変更

[root@server]# nano /etc/ssh/sshd_config
#Port 22 →コメント外して、「port ○○○○」(自分がわかるポートでルータとファイアウォールの開いてる番号:例 50022とか。)
PermitRootLogin no →追記

[root@server]# /etc/rc.d/init.d/sshd restart

※あとで、パスワードじゃなく公開鍵での認証にするなら、公開鍵作って設定変更。
(http://www.yuyak.com/537)
(http://tanaka.sakura.ad.jp/archives/001065.html)
(http://www.happytrap.jp/blogs/2010/11/03/4146/)

作成したユーザ・変更したポートで新たにログイン確認。その後、rootにsuする。「-」忘れちゃダメよ。一部コマンド実行できなくなるから。
ここまでで、SSHログイン設定は、セキュリティもOK。

3)yumで取り敢えずのアップデート

[root@server]# yum update
※リストがずらっと出てくるので内容を確認して、変なモノとか予期せぬものがないかチェック。それで、いいの?インストールして?と聞いてくるから「y」入力enterでインストールされる。カーネルとかアップデートしないほうがいいものもあるかもしれないけど、取り敢えずは、あとで迷うより、最初に最新なったわ、って方が、効率よさそうだから、全部逝っとく。

ここでサーバのリスタート。

[root@server]# shutdown -r now
(待っとく。)
一回ターミナルとじて、再度開く。

[namae@server]$ su –

ここまでできたら、初期設定はOK。
次は、普通はファイアウォールだけど、ポートを閉じてしまうと、通信できない原因が設定ミスかポートかわからんくなるので、これは後にして、先に各種インストールと設定へ。(本当はセキュリティ上ダメよ;)
あと、不要なデーモンをストップ、っていうのも。これも、設定終わってからじゃないと、間違ったのストップして、FTPとか動かなくても原因究明できないから、後にする。(ntsysvコマンドから確認と起動設定・停止ができる)
こちらのページの中ほどの、(http://tanaka.sakura.ad.jp/archives/001065.html)「CentOSで標準で稼働しているサービス一覧」というのが参考になる。

4)必要なサービスがインストールされてるか起動してるか順番に確認する

取り敢えず、必要なサービスは、
・HTTPDサーバ(+PHP+MYSQL:これは後で。)
・FTPサーバ
・DNSサーバ<nsd>にしようと思ったけど、インストール面倒そうなので、nsdより重いらしいけどで。
・MAILサーバ こんな感じ?(※忘れてたら後で追記ね。)

取り敢えずは、サーバ会社から提供される初期情報とにらめっこ。
その後、インストールされてるか、確認。
[root@server]# yum list installed
でも、いっぺんに確認しても、どうせアレなんで、1個ずつ確認してインストールしていく。

[root@server]# yum list installed httpd
→一番気になるAPACHE。今回のサーバ(さくらVPS)は入ってた。一旦起動しとくか。
[root@server]# service httpd start →OK
[root@server]# chkconfig httpd on →再起動しても初期起動するようにする
[root@server]# chkconfig –list httpd →起動レベルで、3,4,5がonになってるか確認。
※chkconfigの2ステップは、他のサービスの設定完了の時もする。
※ntsysvコマンドから設定しても構わない。
———————–
リストの中で “*” が付いているデーモンが、ホスト機の起動時に一緒に起動するようになる。起動/停止を変更したいデーモンを ↓ 、 ↑ で選び、 スペース を押して “*” を付けたりはずしたりして設定を変更。 最後にTABでOKまたは取り消しを選択してENTER。
起動レベル3,4,5の設定を一度に編集するなら、「ntsysv –level 345」で。
———————-

基本サーバのパッケージを順番に確認。
※サーバが64bitなら、「x86_64」のパッケージを、32bitなら、「i386」のパッケージを。

[root@server]# yum list installed vsftpd
→入ってなかった。インストールしとくか。

[root@server]# yum install vsftpd
→インストール可能なリストが出てくる。(多分本体1個だけ)確認して、「y」でインストール。

こんな感じで、全部やって行く。
[root@server]# yum list installed bind postfix dovecot

[root@server]# yum install bind
はいここで、BIND使うときに、「bind-chroot」(DNSのchroot機能)と「caching-nameserver」(DNSのキャッシュ機能)の2つも必要になりますので、一緒にインストールしときます。

5)PHP5.2.16とMYSQLのレポジトリからのインストール

あとで、PHPとMYSQLを入れるのだけど、CMS系とか対応推奨バージョンが、PHPが5.2系というときも結構有って、CENTOS5のデフォルトの5.1系もダメ、最新の5,3系もダメ、ってことで、対応できるレポジトリを引っ張ってくる。この手順は、後でPHPの設定するときで全然OK。取り敢えずネタを忘れたくないので、先に書いとく。

[root@server]# rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
→別にメッセージもなく、終わる。
[root@server]# nano /etc/yum.repos.d/utterramblings.repo
→utterramblings.repoという新規ファイルが作成されるので、下記内容を入力して、保存する。
————————
[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
————————
[root@server]# yum –enablerepo=utterramblings update php
(※phpがインストールされてない場合は、updateをinstallにする)
MYSQLも同じく。

enabled=1にすると、新しいアップデートが出たときに、yumのアップデートで更新されるので、
再度utterramblings.repoを開いて、enabled=0に変更しておく。
※インストールするパッケージなどを、yumインストールの際に確認しながら入れるのであれば、そのママにしても、yumからパッケージがあるかどうかを聞きに行くだけなので実害はない。
※サーバにapacheが予め入っていなかったときは、このレポジトリで、一緒にインストールすると、互換性とかイロイロ面倒がなくていいかも。

6)はい。じゃあ、各種設定。まずは、DNS(BIND)から行こうかな。

ネームサーバ立てても、DNSが行き渡るまで接続エラーとか出るし、設定間違ったら、またやり直して浸透するまで、っていうんで、数日掛かるから、先にここまでやっとくほうが安心。
だけど、設定に不安のある内は、DNSいじってしまう前にIP接続で、FTPとかの設定内容確認しといたほうが、エラー原因が分かりやすくていいのかも。DNS接続の絡むエラーがこんがらがって来ると、本当にめんどうだから。。。

独自ドメインを取る。今回は、GO DADDY(http://www.godaddy.com/)で。ムームードメインとかお名前.comなんかでも全然OK。
(ドメイン、前に使ってるのを入れ替えるか新しく取るかで迷うので、ちょっと放置して先にFTPやっとこ。言ってることと違うじゃん!とか突っ込んじゃ、ダメだ!これは私の備忘録なんだから。笑)

*********************************