POP3と同じ現象。
コネクトし、ログインできる。メールボックスが空に近いとき (数通以下) にはメール一覧が表示できるし、そのメールが十分に短い (本文が数行くらいまで) ときにはメールの受信もできる。しかし、メールボックスに多数のメールがはいっていると一覧表示のタイミングで黙ってしまうし、長いメールを受信しようとしても黙ってしまう。
tcpdumpで確認してみたら、need to frag mss(ほげ)を出して返事がこない。ICMPをフィルターしているのか?
とりあえずメールサーバーのICMPを確認してもらうまで、tcpmssdで自衛することに。
Daemon News : Cheaper Broadband with FreeBSD on DSL_ のSection6のスクリプトを修正。しかしkillがシェル組み込みになったのって最近なんだね。
#!/bin/sh
#
# Manage TCP MSS correction daemon "tcpmssd".
#
# commands
IPFW=/sbin/ipfw
CAT=/bin/cat
TCPMSSD=/usr/local/bin/tcpmssd
# arguments
INTERFACE="ほげNIC名0"
# process ID
PID_DIR=/var/run
PID_FILE=$PID_DIR/tcpmssd.$INTERFACE.pid
# divert socket
DIVERT_PORT=1234
DIVERT_RULE_ID=1001
DIVERT_RULE="divert $DIVERT_PORT tcp from any to any out xmit $INTERFACE setup"
case $1 in
start)
$IPFW add $DIVERT_RULE_ID $DIVERT_RULE
$TCPMSSD -p $DIVERT_PORT -i $INTERFACE
;;
stop)
kill `$CAT $PID_FILE`
$IPFW del $DIVERT_RULE_ID
;;
esac
これを/usr/local/etc/rc.d/tcpmssd.shとして。chmod +xで実行属性をつけておく。



[ コメントする ]