たまごやきの内部仕様書

いま、454個のモジュールがあります。

たまごです。Fedora で専用サーバーを立ててから早くも3年目になろうとしています。丸2年のサーバー運営では、自転車操業的な中でさまざまなトラブルに立ち向かって参りました……

その中でも一番多いのが、「起動不能」。とくにX関連。サーバーとして使ってるだけでなく、実はIRCに常時接続するクライアントとしても使っていたり、メインを起動するまでもないようなことはサーバーで済ませてしまっていたのですが、ブラウザが起動しなかったり、Xが起動しなかったり。他にも、ネットワークが動かなかったり。どうしようもないですねえ。いつの間にか設定が書き換わってしまっているのだけど、何が悪かったのかなんてことはわかりもしない。

昨日、大学のちょっぴり詳しい方々とお話していて、うちのプロジェクトのサーバー群はみなFedora Core 6を使っている、どうしてあんなテスト機能盛りだくさんOSを使うのだろうか、と疑問を言っていた。Fedoraはいろんな新機能やモジュールをとにかく詰め込んでリリースし、ウケが良かった機能をRHLに取り込むんです。んで、コミュニティの人たちがせこせことCent OSに落とし込んでいく……自宅サーバーや大学のプロジェクト程度のサーバーならCent OSを使った方がいいのでは、というのだ。

そうか、だからCent OSの記事が多いのか……、と今更ながら納得。サーバーは、基本的には提供するサービス以外の機能は要らないはず。てんこ盛りじゃなくていいのね。Ubuntuのサーバーエディションみたいなのもかなり注目されてるけど、Debian系はちょっと無理っていう方はCent OSをどうぞ。夏休み、まだ半分残ってるし、サーバーも再インストールしてみようかしらねえ。

1 Entry per Day: C言語のNcursesで日本語を扱う

上のサイトによると、Ncursesで日本語を扱うには、次のようにプログラムを組まなければならないとしている。

  1. プログラムではつぎのコードを挿入すること。
    setlocale(LC_ALL,”");
  2. コンパイル時のオプションには -lncurses ではなく -lncursesw を用いること。

僕が大学の演習で作ってるプログラムはもろに日本語だらけなので、いきなり文字化けした時は何事かと思った。

大学のプログラミング演習の授業で ncurses ライブラリを使うので、自宅サーバーにもインストールしました。

1. ncurses がインストールされているかチェック。

$ yum list | grep ncurses
ncurses.i386                   5.6-18.20080628.fc9     installed
     :
ncurses-devel.i386             5.6-18.20080628.fc9     to be updated
     :

今回は、ncurses-devel.i386 などのパッケージも必要になりますが、まだインストールされていないようです。

そこで、ncurses 関連を一気にインストールしてしまいましょう。

# yum install ncurses*

入りました。

C 言語でプログラミングし、ncurses ライブラリを使用したソースコードをコンパイルするときは、-lncurses オプションをつけてあげてください。

書き換えながら、やってます。

あにょの自宅サーバ構築メモ(Fedora) » SMTPサーバ(Postfix)
作業前準備について。

sendmail を停止する。
# /etc/rc.d/init.d/sendmail stop

Server World – Fedora 9 – MAILサーバー – Postfix インストール/設定
インストールの方法。

# yum install postfix

# vi /etc/postfix/main.cf /* コンフィグファイルの編集 */

# 76行目、ホスト名を指定
myhostname = mail.server-linux.inf

# 161行目:追記
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 83行目:コメント解除しドメイン名指定
mydomain = server-linux.info

# 99行目:コメント解除
myorigin = $mydomain

# 116行目:変更
inet_interfaces = localhost

# 261行目:コメント解除
mynetworks = 127.0.0.0/8

Fedora 9でメールサーバ構築 (KOICHI SHIMIZU CREATOR’S WEBLOG)
MTA変更の方法。

変更方法その1

MTAの切り替えツールもインストール。
# yum install system-switch-mail-gnome
これを実行すると簡単に切り替え完了。
# system-switch-mail

変更方法その2

# alternatives –config mta

2 プログラムがあり ‘mta’ を提供します。

選択 コマンド
———————————————–
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
postfixを使うので選択番号[2]を入力します

コンフィグファイルの編集を続ける。

# vi /etc/postfix/main.cf
(416行目 #home_mailbox = Maildir/)
home_mailbox = Maildir/

rootユーザ用のMaildirを作成。
# mkdir ~/Maildir
# mkdir ~/Maildir/cur
# mkdir ~/Maildir/new
# mkdir ~/Maildir/tmp

ユーザを作成した際にMaildirが自動作成されるよう/etc/skelに用意しておく。
# mkdir /etc/skel/Maildir
# mkdir /etc/skel/Maildir/cur
# mkdir /etc/skel/Maildir/new
# mkdir /etc/skel/Maildir/tmp

念のため設定ファイルのチェックを行う。
# postfix check

起動。
# service postfix start

自動起動にする。
# chkconfig postfix on

設定変更後は再読み込みを行う。
# service postfix reload

他のパソコンからのメール転送は受け付けない設定であるかを確認する。

玄箱 メールサーバ(main.cf SMTPサーバ設定) | けんぱちんのひとりごと
Gmail サーバーを中継サーバーとして利用するための設定。

それでは,/etc/postfix/main.cf のSMTPサーバの認証に関する部分です。
パラメータの最初に「smtp」と「smtpd」の2種類があることに注意して下さい。
「smtpd」は玄箱のpostfixがサーバとして動作することに関する設定,
「smtp」はGmailのSMTPサーバに対して玄箱のpostfixがクライアントとして
動作することに関する設定です。

# (サーバ)SMTP-Auth設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_seculity_options = noanonymous
#broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject
smtpd_sasl_path = smtpd
smtpd_sasl_type = cyrus

# 受信メールサイズ制限 10MB(10*1024*1024)(ちょっと違う要素の設定)
message_size_limit = 10485760

# (クライアント)SMTP-Auth設定(上記記述に対してsmtp「d」がない)
smtp_sasl_auth_enable = yes
# Gmailのアカウントを登録してあるファイルの指定
smtp_sasl_password_maps = hash:/etc/postfix/gmail
# Gmail用mechanism_filter
smtp_sasl_mechanism_filter = cram-md5, plain
# TLS(別名SSL)の設定
smtp_use_tls = yes
smtp_sasl_tls_security_options = noanonymous

いろんなページを探って,やっと上記設定にたどり着きました。
次は,Gmailへの認証用のIDとパスワード情報のファイルを生成します。
/etc/postfix ディレクトリ内でgmail(どんなファイル名でもよい)ファイルを
新規に作成し,以下の内容を記述します。
[smtp.gmail.com]:587 ユーザ名@gmail.com:パスワード

そして,次のコマンドでDB化します。
postmap gmail
するとgmail.db というファイルができるので,グループをpostfixに,パーミッションを640に変更しておきます。
chgrp postfix gmail.db
chmod 640 gmail.db

プログラムを一時停止するには (atmarkit)

Linux の端末で vi エディタなどを使ってるときに、Windows のアプリケーションで慣れたキーボードショートカットを間違って入力してしまうことがある。最近ではめっきり減ったが、単純な操作ミスなどで、プログラムを一時停止にしてしまうことがある。

今日もまた sendmail のことでいろいろといじってるときに vi を一時停止にしてしまって、「うおぉぉ戻し方わかんねえ\(^o^)/」ってなってたので、Google 先生に聞いてみました。

戻し方は、fg タスク番号

タスク番号ってのは jobs コマンドをたたいたときに [カッコ] でくくって表示される番号のこと。

ちなみに、バックグラウンドのプロセスを一時停止したときや、X Window 上で実行されてるプログラムを一時停止したときは、bg コマンドを使う。

一時停止を使えば、貧弱なサーバーでも重たい処理をちょっと止めて今はこっちに集中。といったことができるね。さすがマルチユーザー・マルチタスク OS です。