Re: [reSIProcate] repro TLS : sending responses
Hi Byron,
I've repeated the test with updated version from SVN
but result looks the same. Here is a trace:
DEBUG | 20070425-170251.881 | repro | RESIP:TRANSPORT
| 1460 | tcpbasetransport.cxx:143 |
TcpBaseTransport::processSomeReads() CONN: 01767A00
1460 [ V4 169.254.2.1:1122 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ]
DEBUG | 20070425-170251.881 | repro | RESIP:TRANSPORT
| 1460 | connectionbase.cxx:472 | Creating buffer for
CONN_BASE: 01767A00 [ V4 169.254.2.1:1122 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ]
STACK | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | tlsconnection.cxx:348 | SSL_read returned 579
bytes [INVITE sips:200@example;user=phone SIP/2.0
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
To: <sips:200@example;user=phone>
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
]
STACK | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | tlsconnection.cxx:392 | SSL bytesRead=579
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | connectionbase.cxx:118 | In State: NewMessage
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | connectionbase.cxx:146 |
ConnectionBase::process setting source [ V4
169.254.2.1:1122 TLS target domain=unspecified
received on: Transport: [ V4 0.0.0.0:5061 TLS target
domain=unspecified connectionId=0 ] connectionId=2 ]
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | transport.cxx:287 | incoming from: [ V4
169.254.2.1:1122 TLS target domain=unspecified
received on: Transport: [ V4 0.0.0.0:5061 TLS target
domain=unspecified connectionId=0 ] connectionId=2 ]
STACK | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | transport.cxx:288 |
INVITE sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | connectionbase.cxx:258 | ##Connection:
CONN_BASE: 01767A00 [ V4 169.254.2.1:1122 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ] received: INVITE
sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | tcpbasetransport.cxx:147 |
TcpBaseTransport::processSomeReads() read=579
STACK | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:277 |
No matching transaction for SipReq: INVITE
200@example tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:66 |
Checking if SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
is for me
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:71 |
Checking rule...
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | messagefilterrule.cxx:42 |
Matching rule for:
INVITE sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | messagefilterrule.cxx:64 |
Method is not in list. Rule does not match.
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:71 |
Checking rule...
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | messagefilterrule.cxx:42 |
Matching rule for:
INVITE sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | messagefilterrule.cxx:64 |
Method is not in list. Rule does not match.
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:78 | No
matching rule found
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:66 |
Checking if SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
is for me
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:71 |
Checking rule...
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | messagefilterrule.cxx:42 |
Matching rule for:
INVITE sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionuser.cxx:74 |
Match!
STACK | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:52 |
Creating new TransactionState:
tid=-24da-8ff50e-5b8b280b [ ServerInvite/Trying
reliable target=[ V4 0.0.0.0:0 UNKNOWN_TRANSPORT
target domain=unspecified connectionId=0 ]]
DEBUG | 20070425-170251.897 | repro | RESIP | 1460 |
helper.cxx:302 | Helper::makeResponse(SipReq: INVITE
200@example tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
code=100 reason=
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | timerqueue.cxx:85 | Adding
timer: Timer Trying tid=-24da-8ff50e-5b8b280b ms=80
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:1763 |
Send to TU: TU: Proxy size=0
INVITE sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| proxy.cxx:85 | Got: INVITE
sips:200@example;user=phone SIP/2.0
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
Max-Forwards: 70
Contact: <sips:169.254.2.1:5061>
To: <sips:200@example;user=phone>
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 178
v=0
o=newstep_client 4962136 12810 IN IP4 169.254.2.1
s=rtp
c=IN IP4 169.254.2.1
t=0 0
m=audio 30002 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
INFO | 20070425-170251.897 | repro | REPRO:APP | 260 |
proxy.cxx:229 | New RequestContext
tid=-24da-8ff50e-5b8b280b : SipReq: INVITE
200@example tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
INFO | 20070425-170251.897 | repro | REPRO:APP | 260 |
proxy.cxx:238 | Inserting new RequestContext
tid=-24da-8ff50e-5b8b280b -> RequestContext:
identity= count=1 final=0
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| proxy.cxx:240 | RequestContexts:
[-24da-8ff50e-5b8b280b -> 0176C340]
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| requestcontext.cxx:84 | process(SipMessage)
RequestContext: identity= count=1 final=0
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| requestcontext.cxx:126 | Got a request.
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey:
Monkey Chain![01759880, 01760448, 017604F8, 01760580,
01760608, 017606A0]
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey:
StrictRouteFixup monkey
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| strictroutefixup.cxx:35 | Monkey handling request:
StrictRouteFixup monkey
; reqcontext = RequestContext: identity= count=1
final=0 orig requri=SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey: Set
Target Connection Monkey
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| settargetconnection.cxx:29 | Monkey handling
request: Set Target Connection Monkey
; reqcontext = RequestContext: identity= count=1
final=0 orig requri=SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey:
IsTrustedNode monkey
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| istrustednode.cxx:32 | Monkey handling request:
IsTrustedNode monkey
; reqcontext = RequestContext: identity= count=1
final=0 orig requri=SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
INFO | 20070425-170251.897 | repro | REPRO:APP | 260 |
aclstore.cxx:504 | AclStore - source address NOT
trusted: 169.254.2.1:1122 TLS
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey:
AmIResponsible monkey
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| amiresponsible.cxx:29 | Monkey handling request:
AmIResponsible monkey
; reqcontext = RequestContext: identity= count=1
final=0 orig requri=SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| proxy.cxx:419 | Proxy::isMyUri
sips:200@example;user=phone 1
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey:
Static Route Monkey
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| staticroute.cxx:36 | Monkey handling request: Static
Route Monkey
; reqcontext = RequestContext: identity= count=1
final=0 orig requri=SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| processorchain.cxx:74 | Chain invoking monkey:
LocationServer monkey
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| locationserver.cxx:25 | Monkey handling request:
LocationServer monkey
; reqcontext = RequestContext: identity= count=1
final=0 orig requri=SipReq: INVITE 200@example
tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
INFO | 20070425-170251.897 | repro | REPRO:APP | 260 |
requestcontext.cxx:251 | RequestContext: identity=
count=1 final=0 orig requri=SipReq: INVITE
200@example tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example:
no targets for sips:200@example;user=phone send 480
DEBUG | 20070425-170251.897 | repro | RESIP | 260 |
helper.cxx:302 | Helper::makeResponse(SipReq: INVITE
200@example tid=-24da-8ff50e-5b8b280b cseq=INVITE
contact=169.254.2.1:5061 / 1 from(wire) tlsd=example
code=480 reason=
DEBUG | 20070425-170251.897 | repro | REPRO:APP | 260
| requestcontext.cxx:633 | Sending final response.
DEBUG | 20070425-170251.897 | repro | RESIP | 260 |
sipstack.cxx:283 | SEND: SipResp: 480
tid=-24da-8ff50e-5b8b280b cseq=INVITE / 1 from(tu)
STACK | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:242 |
Found matching transaction for SipResp: 480
tid=-24da-8ff50e-5b8b280b cseq=INVITE / 1 from(tu) ->
tid=-24da-8ff50e-5b8b280b [ ServerInvite/Trying
reliable target=[ V4 169.254.2.1:5061 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ]]
STACK | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:1035 |
TransactionState::processServerInvite: SipResp: 480
tid=-24da-8ff50e-5b8b280b cseq=INVITE / 1 from(tu)
STACK | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:1181 |
Received failed response in Trying or Proceeding.
Start Timer H, move to
completed.tid=-24da-8ff50e-5b8b280b [
ServerInvite/Trying reliable target=[ V4
169.254.2.1:5061 TLS target domain=unspecified
received on: Transport: [ V4 0.0.0.0:5061 TLS target
domain=unspecified connectionId=0 ] connectionId=2 ]]
DEBUG | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | timerqueue.cxx:85 | Adding
timer: Timer H tid=-24da-8ff50e-5b8b280b ms=32000
STACK | 20070425-170251.897 | repro |
RESIP:TRANSACTION | 1460 | transactionstate.cxx:1650 |
tid=-24da-8ff50e-5b8b280b sending to : [ V4
169.254.2.1:5061 TLS target domain=unspecified
received on: Transport: [ V4 0.0.0.0:5061 TLS target
domain=unspecified connectionId=0 ] connectionId=2 ]
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | transportselector.cxx:520 | Looked up source
for destination: [ V4 169.254.2.1:5061 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ] -> [ V4
169.254.2.2:0 TLS target domain=unspecified received
on: Transport: [ V4 0.0.0.0:5061 TLS target
domain=unspecified connectionId=0 ] connectionId=2 ]
sent-by=169.254.2.1 sent-port=5061
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | transportselector.cxx:868 | Transmitting to [
V4 169.254.2.1:5061 TLS target domain=unspecified
received on: Transport: [ V4 0.0.0.0:5061 TLS target
domain=unspecified connectionId=0 ] connectionId=2 ]
tlsDomain= via [ V4 169.254.2.2:5061 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ]
SIP/2.0 480 Temporarily Unavailable
Via: SIP/2.0/TLS
169.254.2.1:5061;branch=z9hG4bK-24da-8ff50e-5b8b280b
To: <sips:200@example;user=phone>;tag=f7577737
From:
<sips:100@example;user=phone>;tag=41d5c8-0-13c4-45018-24da-7b34ae4a-24da
Call-ID: 4bb758-0-13c4-45018-24d9-7ed716e4-24d9
CSeq: 1 INVITE
Content-Length: 0
DEBUG | 20070425-170251.897 | repro | RESIP:TRANSPORT
| 1460 | transport.cxx:213 | Adding message to tx
buffer to: [ V4 169.254.2.1:5061 TLS target
domain=unspecified received on: Transport: [ V4
0.0.0.0:5061 TLS target domain=unspecified
connectionId=0 ] connectionId=2 ]
--- Byron Campen <bcampen@xxxxxxxxxxxx> wrote:
> I am not seeing any code that would cause what
> you're describing.
> For responses, the port in the sent-by portion of
> the Via is ignored
> entirely. rport can override the port we send back
> to, but that
> should never be set by anything other then the
> receiver of the
> request, and it will be set to the same port as the
> source anyway.
> Could you provide a message trace?
>
> Best regards,
> Byron Campen
>
> > RFC 3261 defines at "18.2.2 Sending Responses"
> >
> > "If the "sent-protocol" is a reliable transport
> > protocol such as
> > TCP or SCTP, or TLS over those, the
> response
> > MUST be sent using
> > the existing connection to the source of
> the
> > original request
> > that created the transaction, if that
> > connection is still open.
> > This requires the server transport to
> > maintain an association
> > between server transactions and transport
> > connections."
> >
> > I noticed that repro is trying to locate
> connection
> > for sending response based on data retrieved from
> Via
> > header of request (REGISTER in my case). Since Via
> > header has 5061 port and REGISTER was sent from
> > different port it failed to locate already
> established
> > connection for sending response. Should it be
> fixed?
> >
> > Thanks,
> > Boris
> >
> >
> >
> >
> > _______________________________________________
> > resiprocate-devel mailing list
> > resiprocate-devel@xxxxxxxxxxxxxxxxxxxx
> >
>
https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>
>
Be smarter than spam. See how smart SpamGuard is at giving junk email the
boot with the All-new Yahoo! Mail at http://mrd.mail.yahoo.com/try_beta?.intl=ca