FreeBSDの最近のブログ記事

MovableTypeのメール投稿プラグインMailPackですが、euc-jpの環境だと本文が文字化けしてしまいます。

MovableType 5.02
MailPack 1.741

※ mt-config.cgiのPublishCharsetはEUC-JP

いろいろ調べてみると、リプライメールが文字化けするという事象は良く出てきますが、
投稿した本文が文字化けというのはあまり出てきません。

いろいろ設定を調べましたが分からず、下記を修正して改善しました。

post_entry.pm の161行目あたり

  require Encode;
  Encode::from_to($text, "ISO-2022-JP", "utf8");   ← 追加
  Encode::_utf8_on( $text ) unless Encode::is_utf8( $text );

ウチの環境だけなのだろうか?


FreshReaderを新しいサーバにインストールしようとして軽くつまづいたのでメモ。

まず、PHPのバージョンが5.3.0だったため、「ionCube PHP Encoder」がまだ未対応。9月ごろにリリース予定になっていたけど、待てないのでPHPを5.2.10にダウングレード。
5.3.0からは古い関数をかなり切り捨てているので、他のスクリプト類をかなり修正したけど、とりあえず無意味でした。

次にはまったのが、FreeBSD AMD64を使っているのを忘れて、FreshReaderに添付されてくるi386のionCube PHP Encoder」を使っていたこと。公式ページからFreeBSD AMD64版をダウンロードして入れ替えてOKとなりました。


FreeBSD7.2のサーバにCacti をインストールしました。

Cacti をports からインストールすると、既にソースからインストール済みのPHPを上書きしてしまうため、必要なものだけports からインストールし、PHPやcacti はソースからインストールしました。


net-snmp

% su
# portinstall net-snmp
# pkg_info | grep snmp
 net-snmp-5.4.2.1_5  An extendable SNMP implementation
# cd usr/local/share/snmp
# cp -p snmpd.conf.example snmpd.conf
# vi snmpd.conf
 下記を編集
  com2sec local     localhost       COMMUNITY
  com2sec mynetwork NETWORK/24      COMMUNITY

# vi /etc/rc.conf
 下記を追加
  snmpd_enable="YES"

# /usr/local/etc/rc.d/snmpd start
# ps ax | grep snmpd
 デーモンが起動していることを確認する。

# snmpget -v 2c -c コミュニティ名 localhost .1.3.6.1.2.1.1.1.0
 値が取れること。

rrdtool

% su
# portinstall rrdtool
# pkg_info | grep rrdtool
 rrdtool-1.3.8       Round Robin Database Tools

php

ソースからインストール済みのPHPをcacti から使えるように再コンパイルします。
(mysql,sockets,snmpを追加)

% cd ソースの場所
% make clean
%./configure  --with-apxs2=/usr/local/apache2/bin/apxs --with-pgsql --with-mysq
l=shared --enable-mbstring --enable-calendar --enable-sockets --with-snmp
% make
% su
# make install
# /usr/local/etc/rc.d/apache.sh restart

cairo

cacti から使用する画像関係のライブラリです

% su
# portinstall cairo
# pkg_info | grep cairo
 cairo-1.8.8,1       Vector graphics library with cross-device output support

cacti

公式サイトからソースをダウンロードしてインストールします。

http://www.cacti.net/

% cd /home/user/public_html
% fetch http://www.cacti.net/downloads/cacti-0.8.7e.tar.gz
% tar zxvf cacti-0.8.7e.tar.gz
% ln -s cacti-0.8.7e cacti

設定ファイルの確認。とくに変更はしませんでした。
% more /home/user/public_html/cacti/include/config.php

mysql

% su
# portinstall mysql-client
# portinstall mysql-server
# pkg_info | grep mysql
 mysql-client-5.0.83 Multithreaded SQL database (client)
 mysql-server-5.0.83 Multithreaded SQL database (server)
# /usr/local/etc/rc.d/mysql-server start

# mysqladmin --user=root create cacti
# echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY
'cactiuser'; FLUSH PRIVILEGES;" | mysql
# mysql cacti < /home/user/public_html/cacti/cacti.sql

ポーリングの設定
# crontab -e -u cacti
 */5 * * * * /usr/local/bin/php /home/user/public_html/cacti/poller.php > /dev/null 2>&1



psqlでテーブルの中身をテキストで出力する方法です。カンマ形式(CSV)は良く使いますが、TAB区切り(TSV)はあまり使わないのでメモしておきます。

<カンマ区切り>
psql -c "select カラム名 from テーブル名;" -A -F,

<タブ区切り>
psql -c "select カラム名 from テーブル名;" -A -F"TAB"
※TABは、Ctrl-vをしてからTABキーを押します。



ソースツリーの同期

FreeBSD7 では、csvup ではなく/usr/bin/csup を用いてソース同期するのが推奨されています。

# cp -p /usr/share/examples/cvsup/standard-supfile /etc

standard-supfile の編集
*default host=CHANGE_THIS.FreeBSD.org
のところを、
*default host=cvsup2.FreeBSD.org
等と書き換える。

/etc/make.conf の「SUP_UPDATE」以下の部分を編集する。
SUP_UPDATE= yes
SUP= /usr/bin/csup SUPFLAGS= -L 2 -r 0 -l /var/run/csup.pid -Z SUPHOST= cvsup2.FreeBSD.org SUPFILE= /etc/standard-supfile

※make.confが古い場合は、下記のようにテンプレートから入れなおす。
 # cp -p /usr/src/share/examples/etc/make.conf /etc

下記でソースを同期する。

# cd /usr/src # make update # csup -g -L 2 -z /etc/standard-supfile


/usr/obj 配下の古いファイルを削除

# cd /usr/obj
# chflags -R noschg *
# rm -rf *


ソースのビルド

# cd /usr/src
# make -j4 buildworld

カーネルのビルドとインストール

# make buildkernel
# make installkernel

シングルユーザモードへの移行

# shutdown now

上記でも良いが、新しいカーネルで起動した方が良いかと思い、下記のように完全に再起動している。

# shutdown -r now

下のどちらかでシングルユーザモードを選択する。

 1)「Welcome FreeBSD!」のメニューで4のシングルユーザモードを選択。

 2)下記の表示が出たらリターンキー以外を押し、okプロンプトに対し「boot -s」と入力する。

Hit [Enter] to boot immediataly, or any other key for command prompt.
Booting [Kernel] in 10 second ...

シングルユーザモードで立ち上がったら、下記のように入力し、ファイルシステムをマウントする。

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

パスが張られていない場合は、下記のように設定すること。
# set path = (/sbin /usr/sbin /bin /usr/bin .)

バイナリと/etc の更新

installworldの前に必要なものをマージする。
# mergemaster -p

バイナリのインストール
# make installworld

旧の/etcには存在しないファイルを/etcにコピーし、差分のあるファイルについて、慎重に確認していきます。

# mergemaster

差分のあるファイルのdiffが表示されるので下にスクロールしながら、修正点を確認します。
一番下までスクロールすると、どうするかを聞いてきます。

d:古いファイルをそのまま残す(新しいファイルは削除)
i:古いファイルに新しいファイルを上書きする
m:画面が左右に分割され、古いファイルが左、新しいファイルが右に表示されるので、一行ずつマージしていく。

m:マージは逆にわかりにくいので、空リターンで元のファイルを残しておいて、後で手で修正した方が良さそうです。

mergemaster終了後、各種設定ファイルを反映させるか聞いてくるので、yを入力し、更新する。

再起動

再起動して最終確認する

# reboot

# uname -a
# dmesg -a | more
# ps aux

などとして、各種サービスが動いていることを確認します。

 

久しぶりにFFFTPで自宅サーバへFTP接続したところ、ホスト側の一覧が出なくなっていた。

 

いろいろ調べたところ、FFFTPでリスト結果を解釈できていないようなので、作者の曽田さんに

メールをしたところすぐに返事を頂いた。リスト結果の月の表記がJanのようなローマ字省略

形ではなく、数字のためFFFTPで表示できていないとのこと。

対応も考えて頂いているようで、重ねて感謝。。

 

↓ もう少し自分で調べてわかったこと

inetdを起動したときの環境変数LANGの値によって、listの表記の仕方が異なる。

LANG=ja_JP.eucJP ⇒ 月の部分が数字
LANG=en       ⇒ 月の部分が3文字の省略形

 

setenv LANG en としてからinetdを再起動したら復旧しました。

OSを起動したときはOKで、LANGに「ja_JP.eucJP」等が設定されたシェルからinetdを

再起動したときにNGだったようです。

 

でも、FreeBSD6まではこんなこと無かったので、FreeBSD7から挙動が変更になった?

 

 


 6月末頃からYahooBBがOP25Bを開始したため、自宅サーバからメール送信ができなくなってしまいました。単純にYahooBBのSMTPサーバを経由するようにしただけでははじかれてしまう為、SMTP認証が必要です。

 SendmailのAuthinfoを使うためにCyrus SASLをインストールします。各種設定ファイルを変更した後、Sendmailの再インストール・再起動を行います。

op25b

 下記が契約しているさくらのレンタルサーバ経由でメールを送れるようにした手順です。
 (私はさくらのサーバを使いましたが、YahooBBや他のプロバイダのサーバでも同様の手順でいけると思います。)

1.メールサーバの機能を確認する

 契約しているプロバイダ等のサーバにtelnet接続し、サーバの条件を調べます。確認するポートはsmtp(25)とsubmission(587)です。

 <さくらのサーバ>

# telnet hoge.sakura.ne.jp 25
Trying aaa.bbb.ccc.ddd...
telnet: connect to address aaa.bbb.ccc.ddd: Connection refused
telnet: Unable to connect to remote host

smtp(25)ポートはNG。
# telnet hoge.sakura.ne.jp 587
Trying aaa.bbb.ccc.ddd...
Connected to hoge.sakura.ne.jp.
Escape character is '^]'.
220 hoge.sakura.ne.jp ESMTP Sendmail 8.13.6/8.13.6; Mon, 23 Jul 2007 17:50:10 +0900 (JST)
EHLO localhost
250-hoge.sakura.ne.jp Hello softbanknnnnnnnnnnnn.bbtec.net [aaa.bbb.ccc.ddd], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN ← SMTP認証
250-STARTTLS ← TLSによる暗号化
250-DELIVERBY
250 HELP

submission(587)ポートを使ってSMTP認証を通せばいけそうです!

 <YahooBBのサーバ>

# telnet ybbsmtp.mail.yahoo.co.jp 25 Trying 124.83.155.241... Connected to ybbsmtp.mail.yahoo.co.jp. Escape character is '^]'. 220 ybbsmtp08.mail.ogk.yahoo.co.jp ESMTP EHLO localhost 250-ybbsmtp08.mail.ogk.yahoo.co.jp 250-AUTH LOGIN PLAIN ← SMTP認証 250-PIPELINING 250 8BITMIME

# telnet ybbsmtp.mail.yahoo.co.jp 587
Trying 124.83.155.241...
Connected to ybbsmtp.mail.yahoo.co.jp.
Escape character is '^]'.
220 ybbsmtp07.mail.ogk.yahoo.co.jp ESMTP
EHLO localhost
250-ybbsmtp07.mail.ogk.yahoo.co.jp
250-AUTH LOGIN PLAIN ← SMTP認証
250-PIPELINING
250 8BITMIME

smtp(25)でもsubmission(587)でもSMTP認証を通せばいけそうです。


2.Sendmailの設定を修正する

 <authinfoの設定ファイル作成>

cd /etc/mail

vi authinfo
AuthInfo:hoge.sakura.ne.jp "U:MAIL@hoge.sakura.ne.jp" "P:PASSWORD" "M:CRAM-MD5"
makemap hash authinfo < authinfo

vi msp-authinfo
AuthInfo:hoge.sakura.ne.jp "U:MAIL@hoge.sakura.ne.jp" "P:PASSWORD" "M:CRAM-MD5"
makemap hash msp-authinfo < msp-authinfo

 <cf/cf/sendmail.mcに設定追加>

   デーモンにSMTP認証の機能を追加

Authinfoの設定
FEATURE(`authinfo', `hash -o /etc/mail/authinfo')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl

プロバイダ等のメールサーバへリレーする設定(ポート587へ接続)
define(`SMART_HOST', `relay:hoge.sakura.ne.jp')dnl
define(`confRELAY_MAILER', `esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl


 <cf/cf/submit.mcに設定追加>

   ローカルからの送信にSMTP認証の機能を追加

MSAの設定
FEATURE(`msp', `hoge.sakura.ne.jp', `MSA')dnl

Authinfoの設定
FEATURE(`authinfo', `hash -o /etc/mail/msp-authinfo')


 <devtools/Site/site.config.m4に設定追加>

   コンパイル時のオプション等を追加

APPENDDEF(`confENVDEF', `-DSASL')dnl
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')dnl
APPENDDEF(`confLIBDIRS',`-L/usr/local/lib')dnl
APPENDDEF(`confINCDIRS',`-I/usr/local/include/sasl1')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/authinfo')dnl

 <sendmailをビルドし直す>

sendmailの再インストール cd (sendmailのソース場所) sh Build sh Build install cd cf/cf sh Build sendmail.cf sh Build install-cf

プロセスの再立ち上げ
sendmailのプロセスをkill
sendmail -bd -q15m ← デーモン
sendmail -ac -q15m ← キュー配信用

ここで、下記のメッセージがでる場合は、sendmailからcyrus SASL が利用できるようになっていません。次項に従ってインストールしてください。
Warning: Option: AuthMechanisms requires SASL support (-DSASL)


3.Cyrus SASLをインストールする

cd /usr/ports/security/cyrus-sasl make install

あとは、前項と同様にしてプロセスを立ち上げてください。
それでもダメな場合は、下記も行ってみてください。

cd (sendmailのソース場所)
sh Build clean
rm -Rf obj.FreeBSD.?.?-?.i386/


このアーカイブについて

このページには、過去に書かれたブログ記事のうちFreeBSDカテゴリに属しているものが含まれています。

次のカテゴリはPCです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.23-ja

関連サイト