sendmail の第三者中継で悩んだ
#ドメインはすべて例です。
example.co.jp のメールサーバを設定中、第三者中継が行えるように見えて、悩んだ。
Trying XXX.XXX.XXX.111...
Connected to mail.example.co.jp (XXX.XXX.XXX.111).
Escape character is '^]'.
220 unknown ESMTP
EHLO example.jp
250-example.co.jp Hello example.jp [XXX.XXX.XXX.222], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
MAIL FROM: <test@yahoo.com>
250 2.1.0 <test@yahoo.com>... Sender ok
RCPT TO: <test@gmail.com>
250 2.1.5 <test@gmail.com>... Recipient ok
QUIT
221 2.0.0 example.co.jp closing connection
Connection closed by foreign host.
いろいろ調べたところ、
テストのtelnetを行ったクライアントの逆引きが example.jp で
/etc/mail/local-host-names に example.co.jp に加え example.jp の記述があった。
local-host-names から example.jp の記述を取り除き、
service sendmail restart で sendmail 再起動(必要)したところ、
MAIL FROM: <test@yahoo.com>
250 2.1.0 <test@yahoo.com>... Sender ok
RCPT TO: <test@gmail.com>
550 5.7.1 <test@gmail.com>... Relaying denied. Proper authentication required.
と無事、第三者中継を拒否するようになった。
VC++のBCMenuクラス内でプログラムが落ちる
VC++のBCMenuを使っている。
BCMenu : http://www.rocscience.com/~corkum/BCMenu.html
http://www.codeproject.com/Articles/22/Cool-Owner-Drawn-Menus-with-Bitmaps-Version-3-03 (3.033がダウンロード可能)
しかし、BCMenuクラス内で落ちることがあった。
・プログラム内で、以下のようにセパレータを追加
BCMenu* pSubMenu;
...
CMenu* pMenu = (CMenu*)pSubMenu;
pMenu->InsertMenu(2, MF_BYPOSITION|MF_SEPARATOR);
・その後、追加したセパレータを削除
・削除したセパレータより下にセパレータがあった場合、このセパレータの表示がおかしくなるもしくは、プログラムが落ちる
プログラムをおったところ、BCMenuData であるはずのものが、CString になってたりした。なので、上記の部分を発見。修正した。
(なぜ、CMenu* にキャストしていたかは謎。)
ついでに、BCMenu の2点おかしなところを発見。
1. 無意味コード
1426行目付近
else if (nFlags&MF_STRING){
ASSERT(!(nFlags&MF_OWNERDRAW));
ModifyMenu(pos,nFlags,nID,mdata->GetString());
}
は、MF_STRING が 0 なので、絶対に if文の中は実行されない
2. 無意味指定
1990行目付近
if(!mdata)mdata=NewODMenu(j,
state|MF_BYPOSITION|MF_SEPARATOR|MF_OWNERDRAW,0,_T(""));//SK: modified for Unicode correctness
の MF_BYPOSITION の指定は意味なし。
ソースを読む限り、BCMenuData->nFlagsに MF_BYPOSITION は、指定しても無意味。
Twitterコマンドラインクライアント shtter の Twitter API 1.1 対応
VC6 で GetProcessId()
VC6 で ShellExecuteEx をしたプロセスのプロセスIDの取得に苦労。
GetProcessId() は、kernel32.dll に実装されているが、VC6 のヘッダにはないみたい。
以下で解決
typedef ULONG (__stdcall *GETPROCESSID)(HANDLE Process);
GETPROCESSID GetProcessId=(GETPROCESSID)GetProcAddress(GetModuleHandle("kernel32.dll"), "GetProcessId");
DWORD processID = GetProcessId(m_hProcess);
Windows7 急に起動を含むすべての動作が遅くなった。
現象: Windows7 急に起動を含むすべての動作が遅くなった。
検索して、HDD のライトキャッシュや DMA 設定などを確認したりしたが、ダメ。
いろいろ設定を確認していて気づいた。
原因:ソフトウェアRAID1 が再同期中
vSphere 上の CentOS5 でのHDD二つの時に、df で表示されるものと違う HDD がマウントされていた。
vSphere 上の CentOS5 でのHDD二つの時に、df で表示されるものと違う HDD がマウントされていた。
以下の状況
つまり、df の表示では、/dev/sda2 が / にマウントされているように見える。
(mount でも同様)
しかし、実際は /dev/sdb2 が / にマウントされている。
(fsck の結果参照)
dmesg を見たら、以下だった。
device-mapper: multipath: version 1.0.6 loaded
EXT3 FS on sdb2, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda4, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
Adding 2096472k swap on /dev/sda3. Priority:-1 extents:1 across:2096472k
理由は不明
fstab の書き方を変更して解決
Microsoft Visual Studio 2008 Service Pack 1 のセキュリティ更新プログラム (KB971092) が Windows7 32ビット で失敗する
Windows Update で失敗、Windows のアプリケーションログに以下のように表示されている。
製品: Microsoft Visual Studio 2008 Professional Edition - JPN - 更新 'Microsoft Visual Studio 2008 - Hotfix - KB971092' をインストールできませんでした。エラーは 1603 です。追加情報は、ログ ファイル C:\Windows\TEMP\VC Libraries QFE Patch_20130514_100355793-Microsoft Visual Studio 2008 Professional Edition - JPN-MSP0.txt にあります。
画面に出たコードは643。
で、繰り返し Windows Update で出てくる。
「kb971092 失敗」検索して いくつか見たが、どれも当てはまらない。
単独で、KB971092 をダウンロードして、実行したが同じエラー
ログを見ると、
MSI (s) (90:60) [10:32:50:098]: Executing op: AssemblyCopy(SourceName=109236|Microsoft.VisualStudio.CommandBars.dll,SourceCabKey=FL_Microsoft_VisualStudio_CommandBars_dll_109236_109236_x86_ln.3643236F_FC70_11D3_A536_0090278A1BB8,DestName=Microsoft.VisualStudio.CommandBars.dll,Attributes=16384,FileSize=69632,PerTick=65536,,VerifyMedia=1,,,,,ComponentId={6D9779D8-A343-4D9D-A3A4-DFC3D3413916},IsManifest=1,,,AssemblyMode=0,)
DEBUG: Error 2902: Operation ixfAssemblyCopy called out of sequence.
MSI (s) (90:60) [10:32:50:098]: 製品: Microsoft Visual Studio 2008 Professional Edition - JPN -- このパッケージのインストール中にインストーラで予期しないエラーが発生しました。このパッケージに問題がある可能性があります。エラー コードは 2902 です。引数: ixfAssemblyCopy、、
このパッケージのインストール中にインストーラで予期しないエラーが発生しました。このパッケージに問題がある可能性があります。エラー コードは 2902 です。引数: ixfAssemblyCopy、、
MSI (s) (90:60) [10:32:50:118]: User policy value 'DisableRollback' is 0
MSI (s) (90:60) [10:32:50:118]: Machine policy value 'DisableRollback' is 0
アクション終了 10:32:50: InstallFinalize。 戻り値 3。
DLL ファイルが変?
それでも、わからず、KB971092 の情報を MS サイトで探してたら、
以下URL で、SP1ではなく、VS2008無印用のパッチ(KB971091)もあることを発見。
http://technet.microsoft.com/ja-jp/security/bulletin/ms09-035
確認したらすでにあたっている!!!(Windows Update で)
なので、KB971091 をアンインストール後、KB971092 をインストール- -> 無事成功
時間がかかった。