2013年4月21日日曜日

Ubuntu IMAPサーバ構築 (Dovecot)

webmail(squirrelmail) を使いたいので、IMAPサーバをインストールします。

1.インストール


Dovecot本体と、IMAPデーモン、POP3デーモンの 3つを入れておきます。
(POP3は、必要に応じて。)

# apt-get install dovecot-common dovecot-imapd dovecot-pop3d

2.設定


ローカルホストのデフォルトポート(143)をリッスンします。

File: /etc/dovecot/dovecot.conf
--
listen = localhost
--

ユーザのホームディレクトリに Maildir形式で保管されたメールを読み込みます。

File: /etc/dovecot/conf.d/10-mail.conf
--
mail_location = maildir:~/Maildir
--

3.起動/停止


# /etc/init.d/dovecot stop … 停止
# /etc/init.d/dovecot start … 起動

4.ファイヤーウォール


外部から接続する場合は、UFW で、POP(110)と、IMAP(143)のポートを開きます。
(webmailだけなら、不要です。)

# ufw allow 110
# ufw allow 143

5.おまけ


セットアップスクリプトです。
--
apt-get install dovecot-common dovecot-imapd dovecot-pop3d
sed -i".bak" -e 's/^#listen.*/listen = localhost/g' /etc/dovecot/dovecot.conf
sed -i".bak" -e 's/^#mail_location.*/mail_location = maildir:~\/Maildir/g' /etc/dovecot/conf.d/10-mail.conf
#ufw allow 110
#ufw allow 143
--

2013年4月17日水曜日

Ubuntu メールサーバ構築 (Exim4)

素のUbuntuは、メールを使えません。
とりあえず、使えるようにしておきましょう。

1.インストール

メールサーバ(smtpd)は、Exim4 を。
スパムメール対策として、spamassassin を入れておきます。

# apt-get install exim4 sa-exim spamassassin

2.Exim4 設定

OS インストール時に、ホスト/ドメインを設定していれば、その他の設定はラクラク。

File: /etc/exim4/update-exim4.conf.conf
--
dc_eximconfig_configtype='internet' … 送受信共に開放(ちょと危険 ^^;;)
dc_other_hostnames='<ホスト名 ex: example.com>'
dc_local_interfaces='' … 入力側のアドレス = 全て
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets='' … 間違っても、リレーは行わないこと。
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home' … Maildir形式を指定
--

対話形式でも設定できます。

# dpkg-reconfigure exim4-config

3.Exim4 起動/停止

# /etc/init.d/exim4 stop … 停止
# /etc/init.d/exim4 start … 起動

4.環境変数(MAIL)設定

mail コマンドで、Maildir を読めるように。

# echo "export MAIL=\$HOME/Maildir" >> /etc/profile

5.spamassassin

お忘れなく。

File: /etc/default/spamassassin
--
ENABLED=1
--

6.ファイアーウォール

# ufw allow 25

7.おまけ

セットアップスクリプトです。
--
apt-get install exim4 sa-exim spamassassin
sed -i".bak" -e "s/dc_eximconfig_configtype.*/dc_eximconfig_configtype='internet'/g" /etc/exim4/update-exim4.conf.conf
sed -i -e "s/dc_local_interfaces.*/dc_local_interfaces=''/g" /etc/exim4/update-exim4.conf.conf
sed -i -e "s/dc_localdelivery.*/dc_localdelivery='maildir_home'/g" /etc/exim4/update-exim4.conf.conf
echo "export MAIL=\$HOME/Maildir" >> /etc/profile
sed -i".bak" -e 's/ENABLED=0/ENABLED=1/g' /etc/default/spamassassin
ufw allow 25
--

こちらも参考に。
https://help.ubuntu.com/12.04/serverguide/exim4.html

2013年4月14日日曜日

Pythonで、Yahoo商品検索APIから gzipで結果を取得する。

WEB高速化とやらが、ブームのようです。
確かに、早いことは良いことだ。

ふと、Yahoo商品検索APIから gzipで結果を取得できないかと、調べてみた。

どうやら、リクエストの時、Accept-encoding に gzip を指定すれば良いみたい。

こんな感じ。

-- ここから --
import urllib, urllib2, gzip, StringIO, json

url = "http://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?"
query = {
 'appid'     : <アプリケーションID>,
 'affiliate_type' : 'yid',
 'query'     : "sony vaio"
}
url = url + urllib.urlencode(query)
req = urllib2.Request(url)
req.add_header('Accept-encoding', 'gzip')
res = urllib2.urlopen(req)
res_data = res.read()
sf = StringIO.StringIO(res_data)
f = gzip.GzipFile(fileobj=sf).read()
json_data = json.loads(f)
-- ここまで --

req.add_header で、gzip を指定しているのが、ポイントです。

print res.headers で、確認してみます。

こんな感じ。
Date: Sun, 14 Apr 2013 06:20:01 GMT
Vary: Accept-Encoding
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Cache-Control: private
Connection: close
Transfer-Encoding: chunked

ちなみに、gzip を指定しないと..
Date: Sun, 14 Apr 2013 06:19:19 GMT
Vary: Accept-Encoding
Content-Type: application/json; charset=utf-8
Cache-Control: private
Connection: close
Transfer-Encoding: chunked

ついでに、JSON を確認しておきましょう。
print json.dumps(json_data, sort_keys=True, indent=4)

とは言っても、元々、Yahooから取得するJSONデータは大きくないので、どれほど高速化に貢献できるのか、疑問ですけどね..(^^;;

2013年4月7日日曜日

Ubuntu サーバの時刻を自動的に合わせる

時刻を合わせる方法はイロイロあるようだけど、これが一番シンプルで良さげ。
https://help.ubuntu.com/8.04/serverguide/NTP.html

# echo "ntpdate ntp.ubuntu.com" > /etc/cron.daily/ntpdate
# chmod 755 /etc/cron.daily/ntpdate

cron で、一日一回 ntpdate を起動しているだけ。簡単です。