Broken pipe error using FTPS(explicit) out channel

1,037 views
Skip to first unread message

marialui...@gmail.com

unread,
Sep 4, 2015, 8:30:25 AM9/4/15
to Bots Open Source EDI Translator
Hello,
 
I have created an out channel of type FTPS(explicit). When I run the route BOTS generates these errors : 
 
A)
Traceback (most recent call last):
 File "/usr/local/lib/python2.7/dist-packages/bots/communication.py", line 1238, in outcommunicate
  self.session.storlines(mode + tofilename, fromfile)
 File "/usr/lib/python2.7/ftplib.py", line 785, in storlines
conn.unwrap()
 File "/usr/lib/python2.7/ssl.py", line 791, in unwrap
s = self._sslobj.shutdown()
error: [Errno 0] Error


B)
INFO     Bots Report; type: new, time: 2015-09-04 11:32:07
    1 files received/processed in run.
    1 files with errors,
    0 files send in run.
 
  Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/bots/communication.py", line 1315, in outcommunicate self.session.storbinary(mode + tofilename, fromfile)
  File "/usr/lib64/python2.7/ftplib.py", line 765, in storbinary conn.sendall(buf)
  File "/usr/lib64/python2.7/ssl.py", line 721, in sendall v = self.send(data[count:])
  File "/usr/lib64/python2.7/ssl.py", line 687, in send v = self._sslobj.write(data) error: [Errno 32] Broken pipe
 
Please could someone help me to understand the reason of these errors?
Thanks a lot.
Luisa

henk-jan ebbers

unread,
Sep 4, 2015, 11:20:00 AM9/4/15
to bots...@googlegroups.com
does there error happen every time?

kind regards,
henk-jan


On 09/04/2015 02:30 PM, marialui...@gmail.com wrote:
> Hello,
> I have created an out channel of type FTPS(explicit). When I run the route BOTS generates these errors :
> A)
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/bots/communication.py", line 1238, in outcommunicateself.session.storlines(mode + tofilename, fromfile)
> File "/usr/lib/python2.7/ftplib.py", line 785, in storlinesconn.unwrap()
> File "/usr/lib/python2.7/ssl.py", line 791, in unwraps = self._sslobj.shutdown()
> error: [Errno 0] Error
>
> B)
> INFO Bots Report; type: new, time: 2015-09-04 11:32:07
> 1 files received/processed in run.
> 1 files with errors,
> 0 files send in run.
> Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/bots/communication.py", line 1315, in outcommunicate self.session.storbinary(mode + tofilename, fromfile)
> File "/usr/lib64/python2.7/ftplib.py", line 765, in storbinary conn.sendall(buf)
> File "/usr/lib64/python2.7/ssl.py", line 721, in sendall v = self.send(data[count:])
> File "/usr/lib64/python2.7/ssl.py", line 687, in send v = self._sslobj.write(data) error: [Errno 32] Broken pipe
> Please could someone help me to understand the reason of these errors?
> Thanks a lot.
> Luisa
> --
> You received this message because you are subscribed to the Google Groups "Bots Open Source EDI Translator" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to botsmail+u...@googlegroups.com <mailto:botsmail+u...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.

marialui...@gmail.com

unread,
Sep 4, 2015, 12:12:50 PM9/4/15
to Bots Open Source EDI Translator
Yes , now I'm testing the route on my PC and I always have the error indicated in point A) . The instrunction that generetes the error is in lib\ssl.py shutdown of _sslobj ( SSLContext).
Thanks Luisa

marialui...@gmail.com

unread,
Sep 7, 2015, 5:20:12 AM9/7/15
to Bots Open Source EDI Translator
Hello Eppye,
 
I send you the log of FTP transaction  :
 
*get* '220-FTP Ready\r\n'
*get* '220 This is a private system - No anonymous login\r\n'

*resp* '220-FTP Ready\n220 This is a private system - No anonymous login'

*cmd* 'AUTH TLS'

*put* 'AUTH TLS\r\n'

*get* '234 AUTH TLS OK.\r\n'

*resp* '234 AUTH TLS OK.'

*cmd* u'USER bots_02number1_test'

*put* u'USER bots_02number1_test\r\n'

*get* '331 User bots_02number1_test OK. Password required\r\n'

*resp* '331 User bots_02number1_test OK. Password required'

*cmd* u'PASS ****************'

*put* u'PASS ****************\r\n'

*get* '230 OK. Current directory is /\r\n'

*resp* '230 OK. Current directory is /'

*cmd* 'PBSZ 0'

*put* 'PBSZ 0\r\n'

*get* '200 PBSZ=0\r\n'

*resp* '200 PBSZ=0'

*cmd* 'PROT P'

*put* 'PROT P\r\n'

*get* '200 Data protection level set to "private"\r\n'

*resp* '200 Data protection level set to "private"'

*cmd* 'PWD'

*put* 'PWD\r\n'

*get* '257 "/" is your current location\r\n'

*resp* '257 "/" is your current location'

*cmd* u'CWD /ppp_to_number1'

*put* u'CWD /ppp_to_number1\r\n'

*get* '250 OK. Current directory is /ppp_to_number1\r\n'

*resp* '250 OK. Current directory is /ppp_to_number1'

*cmd* 'TYPE A'

*put* 'TYPE A\r\n'

*get* '200 TYPE is now ASCII\r\n'

*resp* '200 TYPE is now ASCII'

*cmd* 'PASV'

*put* 'PASV\r\n'

*get* '227 Entering Passive Mode (93,62,120,244,125,123)\r\n'

*resp* '227 Entering Passive Mode (93,62,120,244,125,123)'

*cmd* u'APPE pippo.txt'

*put* u'APPE pippo.txt\r\n'

*get* '150 Accepted data connection\r\n'

*resp* '150 Accepted data connection'

*cmd* 'QUIT'

*put* 'QUIT\r\n'

*get* ''

The problem persists : I don't understand why the shutdown() instruction fails .
Thanks Luisa

Craig Cook

unread,
Sep 7, 2015, 9:13:44 AM9/7/15
to Bots Open Source EDI Translator
Does this work successfully with a different client, like filezilla?

You may be hitting a bug in the underlying ruby libraries that BOTS uses.

What version of the python ssl library are you using?

Craig

marialui...@gmail.com

unread,
Sep 7, 2015, 9:36:40 AM9/7/15
to Bots Open Source EDI Translator
Hy Craig,
 
Filezilla Client works fine !
I'm using python 2.7.6 (64bit).
 
Thanks

Craig Cook

unread,
Sep 7, 2015, 10:40:55 AM9/7/15
to Bots Open Source EDI Translator
I would try to make your FTPS session work in plain python before looking at BOTS again.

This page may help: https://docs.python.org/2.7/library/ftplib.html

If you do have a bug in Python, BOTS will never work.

I believe you have certificates involved, but I am not sure how you make this work though.

Craig

henk-jan ebbers

unread,
Sep 7, 2015, 11:00:59 AM9/7/15
to bots...@googlegroups.com
hi luisa,

I am not sure what the problem is.
in the channel, in filename add: {overwrite} (somewhere in the fielname.
this does cause problems with some ftp-servers (but I am sure if that is the case here)

henk-jan
> File "/usr/local/lib/python2.7/dist-packages/bots/communication.py", line 1238, in outcommunicateself.session.storlines(mode + tofilename, fromfile)
> File "/usr/lib/python2.7/ftplib.py", line 785, in storlinesconn.unwrap()
> File "/usr/lib/python2.7/ssl.py", line 791, in unwraps = self._sslobj.shutdown()
> error: [Errno 0] Error
>
> B)
> INFO Bots Report; type: new, time: 2015-09-04 11:32:07
> 1 files received/processed in run.
> 1 files with errors,
> 0 files send in run.
> Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/bots/communication.py", line 1315, in outcommunicate self.session.storbinary(mode + tofilename, fromfile)
> File "/usr/lib64/python2.7/ftplib.py", line 765, in storbinary conn.sendall(buf)
> File "/usr/lib64/python2.7/ssl.py", line 721, in sendall v = self.send(data[count:])
> File "/usr/lib64/python2.7/ssl.py", line 687, in send v = self._sslobj.write(data) error: [Errno 32] Broken pipe
> Please could someone help me to understand the reason of these errors?
> Thanks a lot.
> Luisa
>

marialui...@gmail.com

unread,
Sep 7, 2015, 11:55:29 AM9/7/15
to Bots Open Source EDI Translator
Hi,
 
I have added {overwrite} in channel file name but the error remains.
Thanks,Luisa
 

Il giorno venerdì 4 settembre 2015 14:30:25 UTC+2, marialui...@gmail.com ha scritto:

henk-jan ebbers

unread,
Sep 7, 2015, 12:07:52 PM9/7/15
to bots...@googlegroups.com
hi Luisa,

the only way I can help is if I reproduce this....
but I do not know if that is possible...

henk-jan

On 09/07/2015 05:55 PM, marialui...@gmail.com wrote:
> Hi,
> I have added {overwrite} in channel file name but the error remains.
> Thanks,Luisa
>
> Il giorno venerdì 4 settembre 2015 14:30:25 UTC+2, marialui...@gmail.com ha scritto:
>
> Hello,
> I have created an out channel of type FTPS(explicit). When I run the route BOTS generates these errors :
> A)
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/bots/communication.py", line 1238, in outcommunicateself.session.storlines(mode + tofilename, fromfile)
> File "/usr/lib/python2.7/ftplib.py", line 785, in storlinesconn.unwrap()
> File "/usr/lib/python2.7/ssl.py", line 791, in unwraps = self._sslobj.shutdown()
> error: [Errno 0] Error
>
> B)
> INFO Bots Report; type: new, time: 2015-09-04 11:32:07
> 1 files received/processed in run.
> 1 files with errors,
> 0 files send in run.
> Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/bots/communication.py", line 1315, in outcommunicate self.session.storbinary(mode + tofilename, fromfile)
> File "/usr/lib64/python2.7/ftplib.py", line 765, in storbinary conn.sendall(buf)
> File "/usr/lib64/python2.7/ssl.py", line 721, in sendall v = self.send(data[count:])
> File "/usr/lib64/python2.7/ssl.py", line 687, in send v = self._sslobj.write(data) error: [Errno 32] Broken pipe
> Please could someone help me to understand the reason of these errors?
> Thanks a lot.
> Luisa
>

marialui...@gmail.com

unread,
Sep 8, 2015, 10:37:16 AM9/8/15
to Bots Open Source EDI Translator
Hello,
 
in order to reproduce the ftplib error we have created an account for the connection to our ftp-server.
The parameters are the following :
 

Server  ftp-edi.pedongroup.com

Mode   TLS explicit

Port       990

Username          botstest

Password            Eigh9ahch{u7ier3

 

On our bots-server we have installed bots-3.2.

 

Thanks,Luisa


Il giorno venerdì 4 settembre 2015 14:30:25 UTC+2, marialui...@gmail.com ha scritto:

henk-jan ebbers

unread,
Sep 10, 2015, 10:37:55 AM9/10/15
to bots...@googlegroups.com
hope to do this sunday.
sorry, it is quite busy on this side.

kind regards,
henk-jan

On 09/08/2015 04:37 PM, marialui...@gmail.com wrote:
> Hello,
> in order to reproduce the ftplib error we have created an account for the connection to our ftp-server.
> The parameters are the following :
>
> Server ftp-edi.pedongroup.com
>
> Mode TLS explicit
>
> Port 990
>
> Username botstest
>
> Password Eigh9ahch{u7ier3
>
> On our bots-server we have installed bots-3.2.
>
> Thanks,Luisa
>
>
> Il giorno venerdì 4 settembre 2015 14:30:25 UTC+2, marialui...@gmail.com ha scritto:
>
> Hello,
> I have created an out channel of type FTPS(explicit). When I run the route BOTS generates these errors :
> A)
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/bots/communication.py", line 1238, in outcommunicateself.session.storlines(mode + tofilename, fromfile)
> File "/usr/lib/python2.7/ftplib.py", line 785, in storlinesconn.unwrap()
> File "/usr/lib/python2.7/ssl.py", line 791, in unwraps = self._sslobj.shutdown()
> error: [Errno 0] Error
>
> B)
> INFO Bots Report; type: new, time: 2015-09-04 11:32:07
> 1 files received/processed in run.
> 1 files with errors,
> 0 files send in run.
> Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/bots/communication.py", line 1315, in outcommunicate self.session.storbinary(mode + tofilename, fromfile)
> File "/usr/lib64/python2.7/ftplib.py", line 765, in storbinary conn.sendall(buf)
> File "/usr/lib64/python2.7/ssl.py", line 721, in sendall v = self.send(data[count:])
> File "/usr/lib64/python2.7/ssl.py", line 687, in send v = self._sslobj.write(data) error: [Errno 32] Broken pipe
> Please could someone help me to understand the reason of these errors?
> Thanks a lot.
> Luisa
>

BikeMike

unread,
Sep 11, 2015, 6:20:21 AM9/11/15
to Bots Open Source EDI Translator
I have been testing this, but I get different errors (not broken pipe)
I can connect ok with FileZilla, upload and download files, so it does not seem to be permissions related.

Using the server as in-channel:
INFO     Running route test_pedongroup 1

*get* '220-FTP Ready\r\n'
*get* '220 This is a private system - No anonymous login\r\n'
*resp* '220-FTP Ready\n220 This is a private system - No anonymous login'
*cmd* 'AUTH TLS'
*put* 'AUTH TLS\r\n'
*get* '234 AUTH TLS OK.\r\n'
*resp* '234 AUTH TLS OK.'
*cmd* u'USER botstest'
*put* u'USER botstest\r\n'
*get* '331 User botstest OK. Password required\r\n'
*resp* '331 User botstest OK. Password required'

*cmd* u'PASS ****************'
*put* u'PASS ****************\r\n'
*get* '230 OK. Current directory is /\r\n'
*resp* '230 OK. Current directory is /'
*cmd* 'PBSZ 0'
*put* 'PBSZ 0\r\n'
*get* '200 PBSZ=0\r\n'
*resp* '200 PBSZ=0'
*cmd* 'PROT P'
*put* 'PROT P\r\n'
*get* '200 Data protection level set to "private"\r\n'
*resp* '200 Data protection level set to "private"'
*cmd* 'PWD'
*put* 'PWD\r\n'
*get* '257 "/" is your current location\r\n'
*resp* '257 "/" is your current location'
*cmd* 'TYPE A'
*put* 'TYPE A\r\n'
*get* '200 TYPE is now ASCII\r\n'
*resp* '200 TYPE is now ASCII'
*cmd* 'PASV'
*put* 'PASV\r\n'
*get* '227 Entering Passive Mode (93,62,120,244,127,172)\r\n'
*resp* '227 Entering Passive Mode (93,62,120,244,127,172)'
*cmd* 'NLST'
*put* 'NLST\r\n'

*get* '150 Accepted data connection\r\n'
*resp* '150 Accepted data connection'
*get* ''

*cmd* 'QUIT'
*put* 'QUIT\r\n'
*get* ''

INFO    
Bots Report; type: new, time: 2015-09-11 19:41:36
   
0 files received/processed in run.
   
1 process error,
   
0 files sent in run.

Traceback (most recent call last):

 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\botslib.py", line 333, in wrapper
    terug
= func(*args,**argv)
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\communication.py", line 1152, in incommunicate
    files
= self.session.nlst()
 
File "D:\Python27\Lib\ftplib.py", line 499, in nlst
   
self.retrlines(cmd, files.append)
 
File "D:\Python27\Lib\ftplib.py", line 718, in retrlines
   
return self.voidresp()
 
File "D:\Python27\Lib\ftplib.py", line 224, in voidresp
    resp
= self.getresp()
 
File "D:\Python27\Lib\ftplib.py", line 210, in getresp
    resp
= self.getmultiline()
 
File "D:\Python27\Lib\ftplib.py", line 196, in getmultiline
    line
= self.getline()
 
File "D:\Python27\Lib\ftplib.py", line 186, in getline
   
if not line: raise EOFError
EOFError

Using it as out-channel
INFO     Running route test_pedongroup 1

*get* '220-FTP Ready\r\n'
*get* '220 This is a private system - No anonymous login\r\n'
*resp* '220-FTP Ready\n220 This is a private system - No anonymous login'
*cmd* 'AUTH TLS'
*put* 'AUTH TLS\r\n'
*get* '234 AUTH TLS OK.\r\n'
*resp* '234 AUTH TLS OK.'
*cmd* u'USER botstest'
*put* u'USER botstest\r\n'
*get* '331 User botstest OK. Password required\r\n'
*resp* '331 User botstest OK. Password required'

*cmd* u'PASS ****************'
*put* u'PASS ****************\r\n'
*get* '230 OK. Current directory is /\r\n'
*resp* '230 OK. Current directory is /'
*cmd* 'PBSZ 0'
*put* 'PBSZ 0\r\n'
*get* '200 PBSZ=0\r\n'
*resp* '200 PBSZ=0'
*cmd* 'PROT P'
*put* 'PROT P\r\n'
*get* '200 Data protection level set to "private"\r\n'
*resp* '200 Data protection level set to "private"'
*cmd* 'PWD'
*put* 'PWD\r\n'
*get* '257 "/" is your current location\r\n'
*resp* '257 "/" is your current location'
*cmd* 'QUIT'
*put* 'QUIT\r\n'
*get* '221 Goodbye. You uploaded 0 and downloaded 0 kbytes.\r\n'
*resp* '221 Goodbye. You uploaded 0 and downloaded 0 kbytes.'
ERROR    
Error in automatic maintenance: "Severe error: found statust OPEN for
dta: 118056."
.

Traceback (most recent call last):

 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\automaticmaintenance.py"
 line
153, in __init__
   
self.statust = self._getstatusfortreeoftransactions(self.rootofinfile)
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\automaticmaintenance.py"
 line
201, in _getstatusfortreeoftransactions
    statustcount
[self._getstatusfortreeoftransactions(child)]+=1
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\automaticmaintenance.py"
 line
201, in _getstatusfortreeoftransactions
    statustcount
[self._getstatusfortreeoftransactions(child)]+=1
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\automaticmaintenance.py"
 line
201, in _getstatusfortreeoftransactions
    statustcount
[self._getstatusfortreeoftransactions(child)]+=1
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\automaticmaintenance.py"
 line
201, in _getstatusfortreeoftransactions
    statustcount
[self._getstatusfortreeoftransactions(child)]+=1
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\automaticmaintenance.py"
 line
221, in _getstatusfortreeoftransactions
   
raise botslib.TraceError(_(u'Severe error: found statust OPEN for idta: %(i
ta)s.'
),tacurrent)
TraceError: Severe error: found statust OPEN for idta: 118056.
INFO    
Bots Report; type: new, time: 2015-09-11 19:46:30
   
1 file received/processed in run.
   
1 system error,
   
1 process error,
   
0 files sent in run.

Traceback (most recent call last):

 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\botslib.py", line 333, in wrapper
    terug
= func(*args,**argv)
 
File "D:\PythonEnv\Bots320_PZ\lib\site-packages\bots\communication.py", line 1251, in outcommunicate
    ta_to
.update(statust=ERROR,errortext=txt,filename='ftp:/'+posixpath.join(self.dirpath,tofilename),numberofresends=row['numberofresends']+1)
UnboundLocalError: local variable 'tofilename' referenced before assignment



henk-jan ebbers

unread,
Sep 14, 2015, 4:42:52 PM9/14/15
to bots...@googlegroups.com
hi luisa,

found time to do some tests.
I started with a filezilla test.

when I try to login via filezilla using the credetentials you provided I get this:
22:39:50 Trace: CFtpControlSocket::OnReceive()
22:39:50 Response: 150 Accepted data connection
22:39:50 Trace: CFtpControlSocket::TransferParseResponse()
22:39:50 Trace: code = 1
22:39:50 Trace: state = 4
22:39:50 Trace: CFtpControlSocket::SendNextCommand()
22:39:50 Trace: CFtpControlSocket::TransferSend()
22:39:50 Trace: state = 5
22:39:50 Trace: CTlsSocket::OnRead()
22:39:50 Trace: CTlsSocket::ContinueHandshake()
22:39:50 Trace: CTlsSocket::OnRead()
22:39:50 Trace: CTlsSocket::ContinueHandshake()
22:39:50 Trace: CTlsSocket::OnRead()
22:39:50 Trace: CTlsSocket::ContinueHandshake()
22:39:50 Trace: CTlsSocket::OnRead()
22:39:50 Trace: CTlsSocket::Failure(-9, 103)
22:39:50 Error: GnuTLS error -9: A TLS packet with unexpected length was received.
22:39:50 Status: Server did not properly shut down TLS connection
22:39:50 Trace: CRealControlSocket::OnClose(103)
22:39:50 Error: Disconnected from server: ECONNABORTED - Connection aborted
22:39:50 Trace: CControlSocket::DoClose(64)
22:39:50 Trace: CFtpControlSocket::ResetOperation(66)
22:39:50 Trace: CControlSocket::ResetOperation(66)
22:39:50 Trace: CFtpControlSocket::ResetOperation(66)
22:39:50 Trace: CControlSocket::ResetOperation(66)
22:39:50 Error: Failed to retrieve directory listing
22:39:50 Trace: CFileZillaEnginePrivate::ResetOperation(66)

any idea?

kind regards,
henk-jan

On 09/08/2015 04:37 PM, marialui...@gmail.com wrote:
> Hello,
> in order to reproduce the ftplib error we have created an account for the connection to our ftp-server.
> The parameters are the following :
>
> Server ftp-edi.pedongroup.com
>
> Mode TLS explicit
>
> Port 990
>
> Username botstest
>
> Password Eigh9ahch{u7ier3
>
> On our bots-server we have installed bots-3.2.
>
> Thanks,Luisa
>
>
> Il giorno venerdì 4 settembre 2015 14:30:25 UTC+2, marialui...@gmail.com ha scritto:
>
> Hello,
> I have created an out channel of type FTPS(explicit). When I run the route BOTS generates these errors :
> A)
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/bots/communication.py", line 1238, in outcommunicateself.session.storlines(mode + tofilename, fromfile)
> File "/usr/lib/python2.7/ftplib.py", line 785, in storlinesconn.unwrap()
> File "/usr/lib/python2.7/ssl.py", line 791, in unwraps = self._sslobj.shutdown()
> error: [Errno 0] Error
>
> B)
> INFO Bots Report; type: new, time: 2015-09-04 11:32:07
> 1 files received/processed in run.
> 1 files with errors,
> 0 files send in run.
> Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/bots/communication.py", line 1315, in outcommunicate self.session.storbinary(mode + tofilename, fromfile)
> File "/usr/lib64/python2.7/ftplib.py", line 765, in storbinary conn.sendall(buf)
> File "/usr/lib64/python2.7/ssl.py", line 721, in sendall v = self.send(data[count:])
> File "/usr/lib64/python2.7/ssl.py", line 687, in send v = self._sslobj.write(data) error: [Errno 32] Broken pipe
> Please could someone help me to understand the reason of these errors?
> Thanks a lot.
> Luisa
>

marialui...@gmail.com

unread,
Sep 15, 2015, 11:05:23 AM9/15/15
to Bots Open Source EDI Translator
Hi Eppye,
 
Now I have tried the connection using Filezilla and it's all OK.
Thanks,Luisa
 
 

Il giorno venerdì 4 settembre 2015 14:30:25 UTC+2, marialui...@gmail.com ha scritto:
Reply all
Reply to author
Forward
0 new messages