socket エラーコード表

SMTP受信詳細ログ(receivelog)配送時の詳細ログ(senderlog)を取得している場合、SMTPプロトコルレベルではなく、Socketエラーが記録されることがあります。
何が起きているかは、Socketエラーの内容を見きわめることで、ある程度の類推が効くケースもあります。
下記の socket エラーコード表は、FreeBSDが公開している内容の一部です。
Socketエラーが記録されているときには、この表を参考にしてください。

エラーコード/名称 意味
4
EINTR
Interrupted system call
システムコールの割り込みが発生した。
socket 1.1 のブロッキング関数呼び出しが、CancelBlockingCall() によって中断された。
9
Bad file descriptor
無効なファイルハンドル。
ソケット関数に渡されたファイルハンドル(ソケットハンドル)が不正である。
13
EACCES
Permission denied
アクセスが拒否された。
connect():ブロードキャストアドレスで接続しようとしたソケットの SO_BROADCASTオプション が有効になっていない。
sendto():ブロードキャストアドレスに送信しようとしたソケットの SO_BROADCASTオプションが有効になっていない。
accept():受付しようとした接続要求がすでにタイムアウトになっている、もしくは取り消されている。
14
EFAULT
Bad address
無効なバッファアドレス
関数に渡されたバッファを指すポインタが無効なアドレス空間を指している。またはバッファのサイズが小さすぎる。
22
EINVAL
Invalid argument
無効な引数が渡された。
listen()を呼び出さずにaccept()を呼び出した。
バインド済みのソケットに対してbind()しようとした。
listen()で待機中のソケットでconnect()しようとした。
関数に渡されたパラメータに無効な値が含まれている。
24
EMFILE
Too many open files
使用中のソケットの数が多すぎる。
同時に利用できるソケット数の最大に達しており、新たにソケットを作成できない。
36
EINPROGRESS
Operation now in progress
すでにブロッキング手続きが実行されている。
ブロッキング関数が実行中であるか、サービスプロバイダがコールバック関数を処理中である。socketでは
1つのプロセスで同時に複数のブロッキング操作をすることはできないため、前回呼び出した操作が完全に
終了するまで次の操作を開始することはできない。
37
EALREADY
Operation already in progress
要求された操作は既に実行中、または実行済み。
キャンセルしようとした非同期操作が既にキャンセルされている。
connect()を呼び出したが、既に前回の呼び出しによって接続処理中である。
38
ENOTSOCK
Socket operation on non-socket
指定されたソケットが無効である。
ソケットハンドルとして無効な値がソケット関数に渡された。
39
EDESTADDRREQ
Destination address required
操作の実行に送信先アドレスが必要。
接続先アドレスを渡さずにconnect()を呼び出した。
送信先アドレスを渡さずにsendto()を呼び出した。
40
EMSGSIZE
Message too long
メッセージサイズが大きすぎる。
送信、または受信しようとしたメッセージが、基盤となるプロトコルのサポートしている最大メッセージ
サイズを超えている。ioctlsocket()でバッファサイズを増やすことで回避可能なこともある。
41
EPROTOTYPE
Protocol wrong type for socket
ソケットは要求されたプロトコルに適合していない。
socket()を呼び出すときに指定したプロトコルタイプがソケットタイ
プと適合していない。メッセージ型プロトコルでストリームソケットを作成しようとした場合など。
42
ENOPROTOOPT
Bad protocol option
不正なプロトコルオプション。
指定したソケットオプションまたはioctlsocket()での操作が、そのプロトコルではサポートされてない。
ストリームソケットに SO_BROADCAST を指定しようとした。
43
EPROTONOSUPPORT
Protocol not supported
プロトコルがサポートされていない。
サポートされていないプロトコルを指定した、またはプロトコルのサポートしていない操作を実行しようとした。
44
ESOCKTNOSUPPORT
Socket type not supported
指定されたソケットタイプはサポートされていない。
45
EOPNOTSUPP
Operation not supported on socket
要求された操作はサポートされていない。
バンド外データを送信/受信しようとしたソケットでそれがサポートされていない。
非接続型(UDPなど)ソケットでaccept()を呼び出した。
46
EPFNOSUPPORT
Protocol family not supported
プロトコルファミリがサポートされていない。
47
EAFNOSUPPORT
Address family not supported
by protocol family
アドレスファミリがサポートされていない。
48
EADDRINUSE
Address already in use
アドレスは既に使用中である。
bind()しようとしたアドレスは、既にほかのソケットで使われている。
同じローカルアドレスを複数のソケットで使うためには、SO_REUSEADDRソケットオプションをTRUEにする必要がある。
49
EADDRNOTAVAIL
Can't assign requested address
無効なネットワークアドレス。
ソケット関数に渡されたネットワークアドレスに無効な部分がある。
50
ENETDOWN
Network is down
ネットワークがダウンしている。
ネットワークシステムが何らかの障害を起こし、機能停止しているため要求された操作が実行できない。
51
ENETUNREACH
Network is unreachable
指定されたネットワークホストに到達できない。
EHOSTUNREACHと同義で使われている。
52
ENETRESET
Net dropped connection or reset
ネットワーク接続が破棄された。
キープアライブを行っている接続で、何らかの障害のためタイムアウトが検出され接続が閉じられた。
53
ECONNABORTED
Software caused connection abort
ネットワーク接続が破棄された。
54
ECONNRESET
Connection reset by peer
ネットワーク接続が相手によって破棄された。
55
ENOBUFS
No buffer space available
バッファが不足している。
メモリ不足のためsocketが操作に必要なバッファを確保することができない。または、バッファを必要と
する関数呼び出しで、小さすぎるバッファが渡された。
56
EISCONN
Socket is already connected
ソケットは既に接続されている。
接続中のソケットに対してconnect()、listen()、bind()等の操作を行おうとした。
接続中のソケットでsendto()を実行しようとした。
57
ENOTCONN
Socket is not connected
ソケットは接続されていない。
接続されていないソケットでsend()、getpeername()等の接続されたソケットを必要と
する操作を実行しようとした。
58
ESHUTDOWN
Can't send after socket shutdown
ソケットはシャットダウンされている。
既にシャットダウンされて送信/受信が停止されているソケットで、送信または受信の操作を実行しようとした。
60
ETIMEDOUT
Operation timed out
接続要求がタイムアウトした。
connect()を呼び出して接続を試みたが、(相手の応答がない等で)処理がタイムアウトになり接続要求がキャンセルされた。
61
ECONNREFUSED
Connection refused
接続が拒否された。
62
ELOOP
Too many levels of symbolic links
ループ。
63
ENAMETOOLONG
File name too long
名前が長すぎる。
64
EHOSTDOWN
Host is down
ホストがダウンしている。
ETIMEDOUTと同義。
65
EHOSTUNREACH
No Route to Host
ホストへの経路がない。
ネットワークの構造上到達できないホストに対して操作を実行しようとした。またはアドレスが不正である。
66
ENOTEMPTY
Directory not empty
ディレクトリが空ではない。
67
EPROCLIM
Too many processes
プロセスの数が多すぎる。
Startup():既にsocketが管理できる最大プロセス数に達しており処理が実行できない。
68
EUSERS
Too many users
ユーザの数が多すぎる。
69
EDQUOT
Disc Quota Exceeded
ディスク割り当てを超過。
70
ESTALE
Stale NFS file handle
実行しようとした操作は廃止されている。
71
EREMOTE
Too many levels of remote in path
リモート。