SASL authentication failure: No worthy mechs found

Dovecotは自前でSASL持っててCyrus SASLいらないんじゃ?
という認識が間違っていて、強烈にハマった件。

■環境

CentOS6
postfix-2.6.6-2.2.el6_1.i686
dovecot-2.0.9-2.el6_1.1.i686
dovecot-mysql-2.0.9-2.el6_1.1.i686
PostfixDovecotMySQLのバーチャルドメイン環境で
一応SMTP AUTH+SSL/TLS化している環境。

■背景

KDDIひかりユーザなので、以下の対応を使用としてハマった。
【重要】中継リレーサーバ提供終了にともなうメールソフト設定変更のお願い
http://www.auone-net.jp/news/111215.html
「Outbound Port25 Blocking」の救済処置である25番ポートで自鯖できる
『中継リレーサーバ (relay-mta.auone-net.jp/relay-mta.dion.ne.jp)』が
2012年7月下旬に終了ということで、サブミッションポートへの変更を
そろそろやっとくかと思いついた。


SMTP認証情報設定
ISP-SMTP認証方式を確認

$ telnet ISP-SMTP 587
220 ISP-SMTP ESMTP
ehlo localhost
250-ISP-SMTP
250-PIPELINING
250-SIZE 20971520
250-ETRN
250-STARTTLS
250-AUTH CRAM-MD5 DIGEST-MD5 PLAIN LOGIN # ISPの認証方式
250-AUTH=CRAM-MD5 DIGEST-MD5 PLAIN LOGIN

■アカウント格納

# echo [ISP-SMTP]:587 username:passwd >/etc/postfix/isp_acnt
# chmod 640 /etc/postfix/isp_acnt
# postmap /etc/postfix/isp_acnt

■設定
設定はざっくり以下のような感じ。ポイントはDovecotでsasl使用しているところ。

# SASL Authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtpd_recipient_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 reject_unauth_destination

# OP25B
relayhost = [ISP-SMTP]:587
#relayhost = [relay-mta.auone-net.jp]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:$config_directory/isp_acnt
smtp_sasl_security_options =
smtp_sasl_mechanism_filter = CRAM-MD5, DIGEST-MD5, PLAIN, LOGIN

■動作確認
Gmailにメール飛ばした時のログが本件。

warning: SASL authentication failure: No worthy mechs found

postfixの「smtp_sasl_mechanism_filter」
を大文字にしたり、小文字にしたり順番変えたり。
dovecotの「auth_mechanisms」をイジクリ倒しても全部同じログ。
ちょっとおおおおおおおおお。なんでやねん。とかイライラMAX。

■解決

cyrus-saslライブラリを入れた。

# yum -y install cyrus-sasl-plain cyrus-sasl-md5

■原因

結果的には必要なパッケージがなかったということになる。
もちろん確証はないけど、SASLに関する誤った認識が原因。

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Postfixは自メールサーバのSMTP-AUTHDovecotのSASLを使用してて、
クライアントとしてSASL認証する場合は、cyrus-saslを使用するってことか?


■補足

ちなみにDebianな環境は以下で対応出来る模様。
apt-get install cyrus-sasl-plain
or
apt-get install libsasl2-modules

ImportError: No module named zlib python

CentOS6.0
VM環境


■背景
CentOS6のPythonは、v2.6系。web2py用に2.5系が欲しいのでインストールしたときに起きたエラー。

■原因
Python2.5コンパイルじに、zilib環境が整っていなかった。

■解決

yum -y install zlib-delve

cd /usr/local/src
wget http://python.org/ftp/python/2.5.6/Python-2.5.6.tgz
tar fxz Python-2.5.2.tgz
cd Python-2.5.2
./configure
make
make install

CentOS6.0の自動パーティションは注意

  • CentOS6.0

以下の環境で導入したとき、
MEM:1GB
HDD:160GB

自動パーティションの結果
/dev/vg_centos6/lv_root:50.00 GiB
/dev/vg_centos6/lv_home:96.59 GiB
/dev/vg_centos6/lv_swap:1.97 GiB



■背景
調査用のサーバ構築のため適当に入れてたが、
homeにrootの2倍の容量が割り当てられてた。というか50GBがrootなのかも。
実際のサーバだとパーティションを分けるのでチェックしてると思うが、
適当に構築した場合は、あとでLVMのリサイズが必要になるので、
注意が必要

Apache Killer対策

CentOS4系は、yum updateでOKぽい。
CentOS5系は、CRを確認しろって。
CentOS-5.6 Continuous Release ( CR ) repository:5.7向けのバグフィックスやセキュリティフィックスを提供。

# i386:
http://mirror.centos.org/centos/5.6/cr/i386/RPMS/centos-release-cr-5-6.el5.centos.1.i386.rpm

# x86_64:
http://mirror.centos.org/centos/5.6/cr/x86_64/RPMS/centos-release-cr-5-6.el5.centos.1.x86_64.rpm

# update
yum update httpd

# Disable CR 
# 無効にするのちょっと悩む。
[root@fujita-b httpd]# vi /etc/yum.repos.d/CentOS-CR.repo 
enabled=0 # 1から0へ変更

で、CentOS6はどうすれば・・・。



http://lists.centos.org/pipermail/centos-announce/2011-August/017689.html
今回のApacheの件で、CRリポジトリの存在を知ったのだけど、

Because these include security and bugfix updates, 
we strongly recommend everyone using CentOS-5 install and 
update their system using this repository.

それなら、導入時にデフォで入れて欲しいんだけど。
Baseというかupdateのリポジトリとの関係も謎。プライオリティ設定が必要なの?
よくわからんから、httpdだけupdateしてみたって話。

SSHの秘密鍵について

■事象
秘密・公開鍵を作成したが、ツールによって使えない。
タブが手放せないため、Poderosaをメインに使用しているが、
Redhat系でntsysvやsystem-config-networkなどのGraphical Linux toolsは、
teratermでないと文字化けというかレイアウトが崩れて困る。
また、WinSCPで鍵使おうとするとPutty形式が必要。



■原因
ツールによって鍵のフォーマットが違うことが原因。

SSH秘密鍵のフォーマットについて
○OpenSSH形式
  OpenSSHのフォーマット。秘密鍵のヘッダーに以下の文字列。
  -----BEGIN RSA PRIVATE KEY-----
○SECSH(ssh.com)形式
  オリジナルのSSHのフォーマット。OpenSSHはssh1.2.12から派生。
  秘密鍵のヘッダーに以下の文字列。
  ---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
PuTTy形式
  PuTTyのフォーマット。秘密鍵のヘッダーに以下の文字列。
  PuTTY-User-Key-File-2: ssh-rsa



■解決
PuTTyのキージェネレータで、相互に変換してやる。
WinSCP使ってたら、PuTTyのキージェネが同梱されているのでそれ使うとOK。

SCPもできてCollectorでタブ化もできるTeraTerm使うが一番の解決策って噂
というか職場ではTeraTerm使用してますが、困ることはまずないっす。

ちなみに、poderosa ver.4.3.4bだとすべてのフォーマットで接続できるぽい。

調査:ソフトウェアによる出力フォーマット

各ソフトウェアで出力できるフォーマットを調査
※暗号化箇所は「*」にしてある

TeraTerm ver.4.70
# 秘密鍵:OpenSSH 形式
-----BEGIN RSA PRIVATE KEY-----
******************************************
-----END RSA PRIVATE KEY-----
# 公開鍵:OpenSSH 形式
ssh-rsa ******************************************
poderosa ver.4.3.4b
# 秘密鍵:SECSH 形式
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Comment: 
******************************************
---- END SSH2 ENCRYPTED PRIVATE KEY ----
# 公開鍵:SECSH 形式
---- BEGIN SSH2 PUBLIC KEY ----
Comment: 
******************************************
---- END SSH2 PUBLIC KEY ----
# 公開鍵:OpenSSH 形式
ssh-rsa ******************************************
PuTTYgen ver.0.61
# 秘密鍵:ppk 形式
PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20110809
Public-Lines: 4
******************************************
Private-Lines: 8
******************************************
Private-MAC: ******************************************
# 秘密鍵エクスポート:ssh.com 形式
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Comment: "rsa-key-20110809"
******************************************
---- END SSH2 ENCRYPTED PRIVATE KEY ----
# 秘密鍵エクスポート:OpenSSH形式
-----BEGIN RSA PRIVATE KEY-----
******************************************
-----END RSA PRIVATE KEY-----
# 公開鍵:OpenSSH 形式
---- BEGIN SSH2 PUBLIC KEY ----
******************************************
---- END SSH2 PUBLIC KEY ----
CentOSUbuntuなどのLinux
# 秘密鍵:OpenSSH形式
# 公開鍵:OpenSSH形式

CentOS 6

やっとでた。まってました。
さっそくダウンロード。

ミラーサイト

ftpで落とす場合は、httpをftpに変更すること。

http://ftp.riken.jp/Linux/centos/

http://ftp.kddilabs.jp/Linux/packages/CentOS/

http://ftp.iij.ad.jp/pub/linux/centos/

http://ftp.jaist.ac.jp/pub/Linux/CentOS/


CentOS 6.0 リリースノート(JP)
http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.0/Japanese


時間をみつけてサーバの切り替えしたい。
6.1はとりあえずまだいいや。

Androidにadb接続する from Windows

■事象
以下のUSBドライバがインストールされない
S3C6410 Android ADB


■原因
根本的な原因はドライバのINFにベンダーIDがないこと。


■解決策

○事前準備
 1.SmartQ端末から 設定 > アプリケーション > 開発 > USBデバッグ をチェック
 2.SmartQ端末から 設定 > Covia Settings > Usb Setting > ADB Mode をチェック
 ○以下は推奨
  ・設定 > アプリケーション > 提供元不明のアプリ をチェック
  ・設定 > アプリケーション > 開発 > スリープモードにしない をチェック

1.ドライバのダウンロード
 どのバージョンからかは不明だが、Android SDKのUSBドライバは別パッケージとなっている模様。
 なので別途ダウンロードが必要だった。
 AndroidSDKマネージャを起動し、以下のパッケージをインストール
 Avaibable packages > Third party Add-ons > Google Inc > Google USB Driver package, revision X > Archive for Windows

2.確認
 以下のディレクトリにインストール(格納)される。
android-sdk-windows\extras\google\usb_driver

 デバイスマネージャから該当するUSBデバイスのプロパティを表示し、
 "詳細"タブ > ハードウェアID で表示された値を控える。

 当方の環境では以下となっていた

 USB\VID_18D1&PID_B004&REV_0224&MI_01
 USB\VID_18D1&PID_B004&MI_01

3.infファイルにVIDを追加する
 以下のファイルを開き追加する。2つ記載してもいいし、使用しているアーキテクチャの箇所のみでもOK。

android-sdk-windows\extras\google\usb_driverandroid_winusb.inf

[Google.NTx86]セクションの末尾に以下を追加
;SmartQ5
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_B004&MI_01

[Google.NTamd64]セクションの末尾に以下を追加
;SmartQ5
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_B004&MI_01

4.ドライバをインストール
 ドライバの更新で、以下のディレクトリを指定するとインストールされる
android-sdk-windows\extras\google\usb_driver



※注意
なお、USBケーブルを外す場合、プロセス握られてOSから取り外しできないので、
「adb kill-server」を実行してから取り外すこと。
あとは、USBメモリのように「安全な取り外し」を行う。


■背景
他のサイトの情報みてたけど、そのまんまやってると当方の環境には合わなかった。
当たり前といえば当たり前なんだけど。