ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2020年12月27日日曜日

SMTPs / POPs ゲートウェイを立てる

 ウチの HDD 録画機であるところの VARDIA RD-S1004K,ネット録画予約するにはメールを介してやり取りするが,古い機種なので SMTP-AUTH / SMTP over SSL / POP over SSL にことごとく対応していない.
プロバイダが提供するメールサーバはこれらが必須になったので,ローカルでメールサーバを立てようかと思ったけど,メールサーバは非常に管理がめんどくさい.
なので素の SMTP / POP を SMTP-AUTH over SSL (SMTPs) / POP over SSL (POPs) に変換するゲートウェイを立ててメール処理自体は gmail のメールサーバに丸投げすることにした.

で,* over SSL の部分は,stone で以下のようにすれば実現できる.

stone smtp.gmail.com:465/ssl 10025 -- pop.gmail.com:995/ssl 110
これで少なくとも POPs に関しては,stone を実行しているマシンのポート 110 で POP アクセスできる.

次に SMTP を SMTP AUTH に変換する簡単なゲートウェイプログラムを作った.→GitHub
SMTP AUTH のプロトコルはググれば色々出てくる.
これを上記 stone と同じサーバに仕掛けて以下のような経路を作ると,

port25 → [SMTP AUTH GW] → port10025 → [stone] → gmail smtp (port993)
port 25 で受けた素の SMTP プロトコルを SMTPs に変換して gmail smtp サーバに転送する.

試しに telnet で手動でメール投げてみた.

  [yoshi@rafale ~]# telnet ag300h 25
  Trying 192.168.0.254...
  Connected to ag300h.
  Escape character is '^]'.
  220 smtp.gmail.com ESMTP y23sm35522980pfc.178 - gsmtp
* EHLO hoge.com
  250-smtp.gmail.com at your service, [xx.xx.xx.xx]
  250-SIZE 35882577
  250-8BITMIME
  250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
  250-ENHANCEDSTATUSCODES
  250-PIPELINING
  250-CHUNKING
  250 SMTPUTF8
* MAIL FROM: <yyyy@gmail.com>
  250 2.1.0 OK y23sm35522980pfc.178 - gsmtp
* RCPT TO: <xxxx@gmail.com>
  250 2.1.5 OK y23sm35522980pfc.178 - gsmtp
* DATA
  354  Go ahead y23sm35522980pfc.178 - gsmtp
* From: yyyy@gmail.com
* To: xxxx@gmail.com
* Subject: TEST
* 
* test mail
* .
  250 2.0.0 OK  1609073620 y23sm35522980pfc.178 - gsmtp
* QUIT
  221 2.0.0 closing connection y23sm35522980pfc.178 - gsmtp
  Connection closed by foreign host.
  [yoshi@rafale ~]#
行頭が * の行が手入力した行.暗号化は stone がやってくれるので telnet で素のテキストでやり取りできるし,EHLO コマンドを投げたあと裏では SMTP AUTH 認証が走っているので,MAIL コマンドが受け付けられているのがわかる.

これで RD-S1004 が延命できたヽ(´ー`)ノ

2020年12月18日金曜日

古い Android 端末を Linux サーバとして復活させる

ちょっとしたサーバを立ち上げる必要が出てきたので,余ってて使いみちがない GalaxyNote SC-05D で Linux 環境を構築することにした.そういうことをするための UserLAnd というアプリがあるが,SC-05D は Android 4.1 と古く UserLAnd が入らないので,それの昔のバージョンである GNURoot を入れる.

あとは sshd を立ち上げてしまえばあとはなんとでもなるが,GNURoot のメンテはもう終わってるらしく,色々環境を修正しないといけない.


(1) apt 環境修正
apt-get update が 404 になるので,/etc/apt/sources.list を修正

root@localhost:~# cat /etc/apt/sources.list
deb http://archive.debian.org/debian/ wheezy main contrib non-free
deb-src http://archive.debian.org/debian/ wheezy main contrib non-free
root@localhost:~# apt-get update
root@localhost:~# apt-get upgrade
(2) sshd インストール,環境修正
root@localhost:~# apt-get install openssh-server
root@localhost:~# passwd                ← root パスワード変更

/etc/ssh/sshd_config の以下を修正
Port 10022
UsePrivilegeSeparation no
PermitRootLogin yes

root@localhost:~# service ssh restart   ← sshd 起動
で PC から WinSCP を使って GNote にファイル転送したところ,大きいファイルが GNURoot 環境で読めない & 消せないファイルが出来上がって困ったが,WinSCP の設定を図のとおりにすることで改善した.

ちょっと使ってみたところ限りなく普通の Linux に近い.なんと言っても apt でビルド済みのパッケージがインストールできるので,非常に使い勝手が良い.
余ってる Android 端末の活用方法としてはありなんじゃないだろうか.


2011年6月13日月曜日

gcc クロスコンパイラ ビルドコマンド

gcc のクロスコンパイル環境構築の一連のコマンド,何度メモをとってもどっかいってしまうので blog に貼り付けてしまう(笑)
# binutils
./configure --target=mn10300-unknown-elf \
--prefix=/home/yoshi/mcu/amgcc; \
make; make install

# gmp
./configure --prefix=/home/yoshi/mcu/amgcc ; make ; make install
# mpfr
./configure --prefix=/home/yoshi/mcu/amgcc \
--with-gmp=/home/yoshi/mcu/amgcc; \
make ; make install
# mpc
./configure --prefix=/home/yoshi/mcu/amgcc \
--with-gmp=/home/yoshi/mcu/amgcc \
--with-mpfr=/home/yoshi/mcu/amgcc; \
make ; make install

# newlib
cd gcc-4.6.0
ln -s ../newlib-1.19.0/newlib .
ln -s ../newlib-1.19.0/libgloss .

# gcc
set path = ( $path /home/yoshi/mcu/amgcc/bin )
setenv LD_LIBRARY_PATH /home/yoshi/mcu/amgcc/lib:$LD_LIBRARY_PATH

mkdir build
cd build
../configure --target=mn10300-unknown-elf \
--disable-libssp \
--prefix=/home/yoshi/mcu/amgcc \
--with-gmp=/home/yoshi/mcu/amgcc \
--with-mpfr=/home/yoshi/mcu/amgcc \
--with-mpc=/home/yoshi/mcu/amgcc; \
make
make install
以下ハマりポイント
・newlib 使わないとなんか失敗する
・--disable-libssp 指定しないと libssp のビルドに失敗する
・gcc で build とか適当に dir 掘って configure 等を実行しないとダメ

# gcc 4.5.3 あたりから gmp だの mpfr だの mpc だの,lib が要るようになってめんどくさい…

2009年10月12日月曜日

Linux は軽い

…という夢を見たんだ.


いやね,いま Libretto30 (Am5x86-100MHz, Mem 20MB) を,単体で Web & メールクライアントに仕立てて復活させようとしているんだけど,
・Windows95 をサポートする Web ブラウザは古いものばかりで,今日日の Web ページは表示が崩れてまともに見れない
・Win98 は既にきつい

 それなら,一般的に Windows よりも軽いといわれている Linux はどうなのよ? とチラッと調べてみたけど,Mem 128MB 以上でないと動かんとか.全然軽くないじゃん.Win95 世代のマシンはすでに切り捨てられたってことね…
 と思ったら見つけたのが以下の 2つ.
・Damn Small Linux
・Tiny Core Linx
特に TCL の方は,iso サイズが 10MB なのに GUI が使えるということで期待していたが,Out Of Memory とかで起動中にカーネルパニックを起こしたwww

ならばと DSL のほうを入れてみたら,無事動いたよ…(゜ーÅ)ほろり
ただし,プリインストールの FireFox 起動してみたら,5分たっても帰ってこねぇw より軽いナントカってブラウザ (写真) はスタイルシートを無視するし,日本語が表示できないのが痛いw rdesktop でリモートデスクトップクライアントにはなるが,これなら Win95 とかわんねぇし.

 (安定性とか置いといて) まともな GUI が使えるという条件において,Win95 より軽い Linux は無いという結論に達した.
 Lib 単体でがんばるなら,Windows 版 w3m を入れるのが落としどころかもしれん.

2009年2月6日金曜日

1807年のブログ

Web クローラに色々な情報を与えるために robots.txt の仕組みが用意されているが,自分がサーバ管理者なら .htaccess でアクセス制限できるので,今まで robots.txt のありがたみがイマイチ分からなかった.

が,ふと Apache ログを眺めていたら,Googlebot が 1807年~2206年の日記をクロールしている事に気づいたw いやいや,そんな世紀の日記とか書けないからwww

今ご覧のブログ,Web Diary Professionalというフリーの blog スクリプトを使わせてもらってるのだが,「先月」「来月」のリンクが (記事が無くても) 常に張られ,記事は無くても 404 にはならずに「記事がありません」と書かれたページが生成されるので,「記事がありません」だけのページが上の年月×12ヶ月分キャッシュされているという状態.

これじゃ Google にもアクセスを受けるうちのサーバにもムダなので,日付指定が含まれている URL を robots.txt でクロール対象外にした.

なるほど,こういう風に使うのか.

2009年1月10日土曜日

Linux サーバを coLinux 化

 ウチの Linux サーバ (Celeron@300MHz のノーパソ),かつては VMWare 上の Linux で動かしていたのだが,あまりの遅さに耐えかねてネイティブな Linux で動かしていた.

 が,どうやっても手持ちの USB LAN アダプタを WEP でしか動かせなかったのと,トラブル時の復旧の容易性 (ディスクイメージファイル 1個をコピるだけで別のホストマシンで復旧できる.メールサーバが動いているのでダウン時間は最小に抑えたい) を考えると,やはりバーチャルマシンで Linux 動かしたほうが便利.

 というわけで,coLinux 入れてみた.VMWare に比べてメモリ消費量が格段に減ったので廃スペックマシンでの動作も快適.素の Linux と変わんないっす.ヽ(´ー`)ノ

 で,本格運用しようと思ったら,無線 LAN アダプタと仮想マシンの LAN アダプタが Bridge できねぇ_| ̄|○
 WPA で接続しようと思ってたのに,いみねーじゃん.

-----
追記:

・無線 LAN アダプタを含めたブリッジができた.情報はここ↓
http://d.hatena.ne.jp/cnaos/20081102/1225628170
ただし,リンク先では無線 LAN アダプタだけ enable にすればよいみたいに読めるが,ウチの環境,無線 LAN・有線 LAN・TAP-Win32 Adapter をブリッジする環境では,有線・無線 LAN を enable にしないとだめだった.

C:>netsh bridge show a

----------------------------------------------------------------------
ID AdapterFriendlyName ForceCompatibilityMode
----------------------------------------------------------------------
1 ローカル エリア接続 2 disabled ← TAP-Win32 Adapter
2 ワイヤレス ネットワーク接続 enabled ← 無線 LAN アダプタ
3 ローカル エリア接続 enabled ← 有線 LAN
----------------------------------------------------------------------

Layer3 互換モードってなんだろうねぇ? 自身の MAC アドレス以外の MAC アドレスを持つパケットを送出できない LAN アダプタ用の設定かな? (てきとう)

・実は WMWare でもホストマシンとゲストマシンとのファイル共有・Samba ファイル共有ができないという現象があって困っていたのだが,WinPCap を使ったブリッジ構成の coLinux でも同じ現象が出て困っていた.(ゲスト OS と,LAN に繋がった他のマシンとなら問題なし) その解決法がここに載っていた↓
http://scratchpad.fc2web.com/colinux/winpcap.html

どっちも重要な割りにすげーマニアックな設定方法なんですけどwww
ググってもなかなか引っかからなくて苦労したよ…

2008年10月11日土曜日

根本的スパム対策

 今まで本命メアドと捨てメアドを使い分けて,本命メアドは信用できるところにしか公開していなかったのでスパムメールとは無縁だったのだが,ついに本命メアドがスパムメール業者に渡ってしまったらしい.出会い系とか「10万円当たりました!」とか大量に届くようになった.これを機に,根本的なスパムメール対策システムを考えてみようと思う.

 一つ思いつくのは,メアドを知らせたい相手一人一人に違うメアドを教えておく,というもの.一般的にはテンポラリメールアドレスと呼ばれる仕組みだが,例えば

Aさん: hoge-a@domain.jp
Bさん: hoge-b@domain.jp
通販業者C: hoge-shop_c@domain.jp

 などのように,一人一人に違うアドレスを教えておく.例えば業者 C がメアドをスパム業者に売ったとしても,あて先メアドから誰が犯人であるか明白であるから晒し上げる事もできるだろうし,そもそも通販のやり取りが終わった時点で hoge-shop_c@domain.jp を破棄すればよい.
 また A さんが事故で hoge-a@domain.jp を外部に漏らしてしまった場合でも,A さん用メアドを新たに割り当てなおして,メアド変更の連絡は A さんだけで済む事から被害を最小限に抑えられる.

 幸い,今使っているメールサーバーの qmail にはこれに適した仕組みが用意されている.具体的には dot-qmail という仕組みで,hoge-*@domain.jp の * があらかじめ設定したものと一致すれば,hoge@domain.jp 宛てへのメールとして届けられる.

 これにより受信側は解決だが,問題は送信側.From アドレスは普通メーラーで設定するから,メール送信ごとにメーラーの From 設定を変えるのはめんどくさい.現実的な案として,To 欄を参照して自動的に From 欄を書き換えるメールゲートウェイを設置する事だが…

 てか,こんなサービス,どこかで既にやってそうな気がしてきた.

2008年5月11日日曜日

ntp.conf の罠

最近,録画 (TV キャプチャボードを使った PC での録画) の冒頭が切れるようになった.

ちょうど,グラフィックボードの交換と発症時期が重なっていたので,これが原因かと思って録画時間を早めに開始する措置をとっていたのだが,ふと時計を見ると,1分遅れてるやん…なんで?(;´д⊂)

自宅 LAN 環境では,Linux サーバに ntpd を立てて WinXP と同期させているので,時刻ずれとは無縁のはずだったのだが… 改めて Linux のログを確認すると,1ヶ月以上前から Linux サーバが参照している上位 ntp サーバとの同期に失敗している.しかも ntp.conf の設定が前設定したのとえらい違うぞ? しかもしかも,前設定した内容が ntp.conf.sv なんてファイルに勝手にバックアップされてるぞ?

と思って調べてみたら,引っかかったのがここ.DHCP 使ってると勝手に ntp.conf が書き換えられてしまうのね.
そういや,ntp.conf の作成日時が前回リブートした日時と一致してるわ.

2008年2月16日土曜日

韓国フィルタ

Linux サーバを立ち上げている人なら誰でも直面する問題,セキュリティ.Linux ではやたらとログが残るので,どこからどんなアクセスがあったかが詳細にわかるので,気になりだすと仕方がない.

特に,中国・韓国あたりからのアタックがひどい.スパムメールの踏み台にしようとしてるのか,メールサーバーに何度もアクセスして失敗した跡がある.

あー,俺別に中国人・韓国人に友達いないし.そんなとこからのパケット無条件に捨ててくれていいよ.

と同じ境地の人がいるはずと思ってググって見たら,いたよ…↓
http://www.hakusan.tsg.ne.jp/tjkawa/lib/krfilter/index.jsp

これは iptables を利用して,中国・韓国・東南アジアからのパケットを無条件でポアするフィルタ.
3日ほどで 221件のアクセスが引っかかった↓

Chain KRFILTERED (2247 references)
pkts bytes target prot opt in out source destination
221 10768 DROP all -- * * 0.0.0.0/0 0.0.0.0/0

変なアクセスログがすっきりヽ(´ー`)ノ

2008年2月3日日曜日

cookie 食えねぇ…

自宅サーバーのアパッチで,クッキーを食わせる cgi を立ち上げていたところ,クライアント PC のブラウザ (IE) でどうやらクッキーが保存されていないことに気づいた.

他のサイトではクッキー OK なので,IE はシロだと判断して,Apache の設定を疑っていたのだが,最初のこの判断が間違っていておおハマリしてしまった.Apache の設定をいくらイジっても改善しない.

ここで,確か IE にはゾーンごとにセキュリティの設定が別々に設定できたよな? と思って一番ゆるい設定にしてみたら,クッキー食えました.犯人は IE かよ…orz

で,さらに詳しく調べてみると,サーバの URL は外から見ると http://naruto.sytes.net/ だが,ローカルでアクセスするときは,http://dds_svr/ とマシン名だけでアクセスしていた.で,IE は,URL にピリオドが何個ついているかもゾーン判定の材料にしているようで,後者でアクセスするとなぜかキツイ制限になってクッキーが拒否されていたようだ.

でも普通,ローカルアクセスのほうが制限がゆるくできると思うのだが….

2008年1月22日火曜日

DNSMasq で DHCP 登録されたホスト名から IP アドレスを解決させる

DNSMasq は,DNS 機能とともに DHCP サーバ機能も持っている.で,FON にインストールされていた DNSMasq では,DHCP により登録されたホスト名でも IP アドレスを解決できていたので,DHCP の特性上動的に IP アドレスが変わっても,ホスト名でアクセスできて便利だったのだが,Linux にインストールしたものは /etc/hosts しか見ない.

こんな機能もともと持ってるはずだよなぁと思ってオプションや conf ファイルを見てみたけど,それらしき設定がない.でもそれを間接的に実現できそうなオプションが見つかった.

具体的には,dnsmasq.conf 内の
dhcp-script=<コマンド>
で,DHCP にマシンが登録・削除されるたびにこのコマンドが呼び出される.そのときの DHCP アドレス貸し出し状況は (デフォルトで) /var/lib/misc/dnsmasq.leases に書かれているので,これを元に /etc/hosts を書き直した後,DNSMasq に /ets/hosts をリロードさせるために,kill -HUP すればよい.

というわけで,↓こんなスクリプトを書いて dhcp-script に指定してみた.

#!/usr/bin/perl -w

$Hosts = '/etc/hosts';
$Leases = '/var/lib/misc/dnsmasq.leases';

exit( 0 ) if( !( $ARGV[ 0 ] eq 'add' || $ARGV[ 0 ] eq 'del' )
&& -e $Hosts || ! -e $Leases );

open( fpIn, "< $Leases" );
open( fpOut, "> $Hosts" );

print fpOut << 'EOF';
# DO NOT EDIT THIS FILE
# This file is generated automatically by dhcp_update.pl
127.0.0.1 localhost localhost.localdomain

# これ以下~EOF の間に,固定 IP アドレスのホスト名を書く
192.168.0.254 ephemeris dds_svr

EOF

while( <fpIn> ){
@_ = split;
print( fpOut "$_[2]\t$_[3]\t# $_[1]\n" ) if( $_[3] ne '*' );
}

close();

kill( HUP, `cat /var/run/dnsmasq.pid` );

/etc/hosts はこのスクリプトにより完全に上書きされる形になるので,DHCP 以外の固定的なホスト情報は,このスクリプト内に書いておかないといけない./etc/hosts に上書きするのがイヤなら,適当なファイルに吐いて dnsmasq.conf の addn-hosts= で指定する方法もあるが,そうすると DNSMasq が走ってるマシン自身で DHCP 登録されたホスト名でのアドレス解決ができない(?).

新しい PC が DHCP に登録されると,/var/log/messages に

Jan 20 17:22:46 ephemeris dnsmasq[1053]: read /etc/hosts - 4 addresses

とか出て,いちお期待通りに動いている模様.ヽ(´ー`)ノ

2008年1月20日日曜日

iptables の勉強

無意味に調子に乗ってきたウチの LAN 環境改革,試験勉強をしようと思ったらいつの間にか始めてしまった掃除のごとくとどまるところを知らない.


今の家の LAN 環境は,↓のように

  [WAN]----(長いLANケーブル)----[ルータ]--[Linux,Fon,PC他]

ADSL モデムが 1F にあり,PC がある 2F まで長い LAN ケーブルが這っているので,このように↓

  [WAN]--[Linux+無線LANカード]・・・・[FON]--[HUB]--[PC他]

1F?2F間を無線 LAN 化してケーブルを取っ払おうプロジェクト発動.そのために,Linux サーバになっているノート PC に 無線 LAN カードを挿して,FON と通信させる事にした.

で,ついでなので,Linux サーバを BB ルータ化しようと,iptables を勉強中.難しいけどオモロイねこれ.一種のサブルーチンみたいな定義も出来るのでなかなか奥が深い.
ただ,iptables の設定は複雑で,下手すると WAN 側から LAN 側覗かれ放題なんて事になりかねないので,WAN・Linux サーバ・LAN を模した 3台の PC で実験中.WAN 側 PC から Linux サーバを attack しまくってますw

そもそも Linux サーバの eth0⇔eth1 が単純に bridge 出来れば別によかったんだけど,なんでかうまく行かない.いろいろググって見ると,bridge した IF の MAC アドレスは (詐称して無理やり) 同じにならなければならないらしいが,ifconfig で見ると同じになっていない.これが原因なんだろうか?
ググっても,bridge がうまく行かない,という記事をあまり見かけないので,なかなかトラブルシューティングができねぇ…

2008/1/23追記:-----
使っている無線 LAN カード WLI-PCM-L11GP に使われている Lucent 社製 chip を使った無線 LAN カードでは,OS に関係なくブリッジは構成できないようになってるらしい (--#
---------

Linux サーバがルータも兼ねるということで,今まで BB ルータにさせていた DHCP サーバ・DNS サーバもインストールしてみた.といっても,dnsmasq っていうナンチャッテ DNS サーバなんだけど(笑)
FON も dnsmasq が動いていて,DHCP (これも dnsmasq の機能) により登録されたマシン名が dnsmasq の DNS 機能によって参照できたのだが,Linux にインストールしたほうは,/etc/hosts に書かれたマシン名しか参照できない.なんで…?

2008年1月13日日曜日

LILOのバカぁ

ウチのサーバーマシンは,今まで VMWare 上で Linux が走っていたのだが,あまりにも遅いので素の Linux を入れる事にした.

で,インストール自体は順調に終わり,データを Linux 側に移したり,設定もあらかた終わったときに,

LILO の MBR を上書きしちまった_| ̄|○

ヤバイ,Linux ブートしねぇ.このノート PC には HDD の他は FDD しか繋がらないから,1CD Linux とか起動できない.WindowsXP だったら MBR が変でも,他のマシンから NTLDR を FD にコピれば FDD からブートできるのだが,LILO ってカーネルイメージのディスク上の位置情報を使ってるから,他のマシンのを持ってくるとかいうわけにはいかんよねぇ.LILO のばかぁ(゜ーÅ)ほろり

再インストールするのもだるすぎるので,なんとか FDD から LILO を復活させる方法を探ってたら,
あったよ…1FD Linux

また一つ,トラブルを乗り越えて大きくなったよ > 俺(゜ーÅ)ほろり

2007年11月30日金曜日

Linux 撤廃計画

ウチのローカルネットワークでは,LINUX を立ち上げてメール・web サーバーなどを立ち上げている.だが,実は純粋な LINUX マシンではなく,VMWare 上で走っているので重い.(しかも古いノート PC なのでさらに遅い(゜ーÅ)ほろり)
そこで,cygwin 上で今のサーバー環境と同等のものを構築できるか考察してみる.

■telnet
Cygwin SSH サーバがあるので OK.

■cron
…あるのか?
まぁ Windows のタスクスケジューラでも何とかなりそう.

■Web サーバ
Cygwin の Apache があるので OK.

■WebDAV
Cygwin の Apache で mod_dav が動くかどうか微妙だが,最悪 sftp でもいいので,まぁなくてもいいか.

■CVS サーバ
どうなるんだろ…? SSH サーバが動いていれば,
setenv CVS_RSH ssh
でいけるような気はするが…

■メールサーバ
一番引っかかりそうなのがこれ.Cygwin 上でなくても,Windows 用のメールサーバでもいいのかもしれないが,今の qmail の機能,具体的には
・SMTP フォワード (外部へのメール送信をプロバイダの SMTP に丸投げする機能)
・ユーザーアカウントエイリアス (qmail でいうところの,user-***@hoge.com 宛ての *** が何であれ user@hoge.com 宛てのメールと解釈してくれる機能.メールアカウントが無限に持てるのと同じ)
が使えないと困る.
というわけで,「cygwin qmail」で検索してみたら,ポーティングしてる人がすでにいる事はいるが,ちょっと試したところ上手くいかない.
そこで方針を変えて,Windows 用で上記の機能を持つメールサーバーを探してみたら,あったよ… → XMail

というわけで,Cygwin でも何とかいけそうなので,Linux→Cygwin 乗り換え計画発動.
いやちょっとまて,そもそも Cygwin と VMWare とじゃどっちが速いんだ?(´・ω・`)