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
Postfix+Dovecot+MySQLのバーチャルドメイン環境で
一応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月下旬に終了ということで、サブミッションポートへの変更を
そろそろやっとくかと思いついた。
$ 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-AUTHにDovecotのSASLを使用してて、
クライアントとしてSASL認証する場合は、cyrus-saslを使用するってことか?
■補足
ちなみにDebianな環境は以下で対応出来る模様。
apt-get install cyrus-sasl-plain
or
apt-get install libsasl2-modules
Apache Killer対策
- CentOS 5.6
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 ----
CentOS 6
やっとでた。まってました。
さっそくダウンロード。
■ミラーサイト
http://ftp.riken.jp/Linux/centos/
- KDDI 研究所
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ドライバは別パッケージとなっている模様。
なので別途ダウンロードが必要だった。
AndroidのSDKマネージャを起動し、以下のパッケージをインストール
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メモリのように「安全な取り外し」を行う。
■背景
他のサイトの情報みてたけど、そのまんまやってると当方の環境には合わなかった。
当たり前といえば当たり前なんだけど。