트위스트 메일 수신기가 제대로 작동합니다. config가 fubar 된 경우를 처리하고 일치하지 않는 cert/key가 팩토리에 대한 인증서 옵션 객체로 전달 될 때까지 바로 작업하십시오.인증서/키가 일치하지 않는 트위스트 시작과 함께 사용하지 마십시오.
elif self.ctx and self.canStartTLS:
try:
self.sendCode(220, 'Begin TLS negotiation now')
self.transport.startTLS(self.ctx)
self.startedTLS = True
except:
log.err()
self.sendCode(550, "Internal server error")
return
내가 코드를 실행하는 인증서와 키를 통과 한 :
나는 제외하고 시도/포함, 나는 다음과 같이 수정 한 ext_STARTLS(self,rest)
의 과부하를 포함하는 모듈, custom_esmtp.py
을 가지고
Unhandled Error
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/twisted/internet/tcp.py", line 220, in _dataReceived
rval = self.protocol.dataReceived(data)
File "/usr/local/lib/python2.7/site-packages/twisted/protocols/basic.py", line 454, in dataReceived
self.lineReceived(line)
File "/usr/local/lib/python2.7/site-packages/twisted/mail/smtp.py", line 568, in lineReceived
return getattr(self, 'state_' + self.mode)(line)
File "/usr/local/lib/python2.7/site-packages/twisted/mail/smtp.py", line 582, in state_COMMAND
method('')
--- <exception caught here> ---
File "custom_esmtp.py", line 286, in ext_STARTTLS
self.transport.startTLS(self.ctx)
File "/usr/local/lib/python2.7/site-packages/twisted/internet/_newtls.py", line 179, in startTLS
startTLS(self, ctx, normal, FileDescriptor)
File "/usr/local/lib/python2.7/site-packages/twisted/internet/_newtls.py", line 139, in startTLS
tlsFactory = TLSMemoryBIOFactory(contextFactory, client, None)
File "/usr/local/lib/python2.7/site-packages/twisted/protocols/tls.py", line 769, in __init__
contextFactory = _ContextFactoryToConnectionFactory(contextFactory)
File "/usr/local/lib/python2.7/site-packages/twisted/protocols/tls.py", line 648, in __init__
oldStyleContextFactory.getContext()
File "/usr/local/lib/python2.7/site-packages/twisted/internet/_sslverify.py", line 1429, in getContext
self._context = self._makeContext()
File "/usr/local/lib/python2.7/site-packages/twisted/internet/_sslverify.py", line 1439, in _makeContext
ctx.use_privatekey(self.privateKey)
OpenSSL.SSL.Error: [('x509 certificate routines', 'X509_check_private_key', 'key values mismatch')]
custom_esmtp.py
의 라인 (286)은 self.transport.startTLS(self.ctx)
입니다 : 즉, 나는 다음과 같은 호출 스택을 얻을 일치하지 않습니다. 스택에 나열된 모든 트위스트 모듈을 따옴표로 묶은 선을 통해 살펴 봤습니다. 다른 try/except 블록이 없습니다 .... 따라서 이해할 수없는 오류가 스택에 다시 전달되어야합니다. 그것은 내 처리기에 custom_esmtp.py
에 도달합니까? 그렇다면 왜 처리되지 않습니다 - 특히 except
만이 "모든 것을 포착"합니다.
미리 감사드립니다. 이 오류가 잡힐하려면
그러나 확실하지는 않지만 단지 'except : except : 예외 처리기'를 가지고 있기 때문에 이미 처리해야합니까? –
@SteveHall 한 번 같은 문제가 있었지만 사용자 지정 예외를 지정해야한다는 것을 상기 할 수 있습니다. 아마도'except'는 내장 된 파이썬 예외 만 처리합니다. 나는 여기에서 일하는 내부 메커니즘을 알지 못한다고 말해야 만한다. – Jivan
고마워요 @ 지반 - 그 도움이 생각 - 예외 처리기가 발사 볼 수 있지만 여전히 전화 스택을 덤프 받고 ... 이상한, 제거 'log.err()'해결! 지금 모든 좋은 것 같다! 고맙습니다! –