After some testing using KDE 4.3 in Kubuntu karmic I can now confirm that Malte's fix works also for kmail. In fact, all kio slaves (like kio_http, kio_smtp) that use the KTcpSocket class correctly support with this fix self-signed certificates.
Kmail correctly uses the certification list that is connected by the symbolic link fix. See extract of the debug log:
kmail(20529) KMComposeWin::doSend: Plain text
kmail(20529) KMComposeWin::doSend: Calling applyChanges()
kmail(20529) KMComposeWin::applyChanges: Entering
kmail(20529) MessageComposer::applyChanges: KMAIL_DEBUG_COMPOSER_CRYPTO = FALSE
kmail(20529) MessageComposer::breakLinesAndApplyCodec: Added an <LF> on the last line
kmail(20529) MessageComposer::breakLinesAndApplyCodec: Added an <LF> on the last line
kmail(20529) MessageComposer::composeMessage: Starting to compose message
kmail(20529) MessageComposer::composeMessage: mEarlyAddAttachments= false mAllAttachmentsAreInBody= false
kmail(20529) MessageComposer::addBodyAndAttachments: Set top level Content-Type from originalContentTypeStr()= "Text/Plain;
charset="us-ascii""
kmail(20529) KMComposeWin::slotContinueDoSend: true
kmail(20529) KMFolderMaildir::addMsgInternal: FolderStorage::msgStatusChanged
kmail(20529)/kmail (storage internals) KMFolderMaildir::getDwString: KDE_fopen(abs_file= "/home/solkraftwerk/.kde/share/apps/kmail/mail/outbox/cur/1264549308.20529.6aSVn" , "r") == stream == 0x289af80
kmail(20529)/kmail (storage internals) KMFolderMaildir::getDwString: fclose(mIndexStream = 0x289af80 )
kmail(20529)/kdepimlibs (mailtransport) MailTransport::Transport::Transport: "1254495839"
kmail(20529)/kio (Slave) KIO::Slave::createSlave: createSlave "smtp" for KUrl("smtp://<email address hidden>:25/send?headers=0&<email address hidden>&<email address hidden>&hostname=Mark-Aurel.gas.de&size=426")
kmail(20529)/kio (KIOConnection) KIO::ConnectionServer::listenForRemote: Listening on "local:/tmp/ksocket-solkraftwerk/kmailw20529.slave-socket"
klauncher(13962)/kio (KLauncher) KLauncher::requestSlave: KLauncher: launching new slave "kio_smtp" with protocol= "smtp" args= ("smtp", "local:/tmp/ksocket-solkraftwerk/klauncherT13962.slave-socket", "local:/tmp/ksocket-solkraftwerk/kmailw20529.slave-socket")
klauncher(13962)/kio (KLauncher) KLauncher::processRequestReturn: "kio_smtp" (pid 20570) up and running.
kmail(20529)/kdepimlibs (mailtransport) MailTransport::SmtpJob::startSmtpJob: Created new SMTP slave 0x28a4ae0
kmail(20529) KMComposeWin::cleanupAutoSave: deleting autosave file "1264549295.20529.CDuGd"
kmail(20529) KMFolderMaildir::removeFile: Can't delete "/home/solkraftwerk/.kde/share/apps/kmail/autosave/new/1264549295.20529.CDuGd" "No such file or directory"
kio_smtp(20570)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
<b>kio_smtp(20570)/kssl KSslCertificateManagerPrivate::loadDefaultCaCertificates: Loading 155 CA certificates from ("/usr/share/kde4/apps/kssl/ca-bundle.crt") </b>
kio_smtp(20570)/kssl KTcpSocket::showSslErrors: "The host name did not match any of the valid hosts for this certificate"
kio_smtp(20570)/kssl KIO::TCPSlaveBase::startTLSInternal: Cipher info - advertised SSL protocol version 8 negotiated SSL protocol version 8 authenticationMethod: "RSA" encryptionMethod: "AES" keyExchangeMethod: "DH" name: "DHE-RSA-AES256-SHA" supportedBits: 256 usedBits: 256
kio_smtp(20570)/kio (kioslave) KIO::SlaveBase::canResume: offset= "0"
kmail(20529) KMSender::cleanup:
kmail(20529)/kmail (storage internals) KMFolderMaildir::reallyDoClose: fclose(mIndexStream = 0x28aba30 )
kmail(20529)/kmail (storage internals) KMFolderMaildir::reallyDoClose: fclose(mIndexStream = 0x2142120 )
kmail(20529)/kdepimlibs (mailtransport) MailTransport::SmtpJob::~SmtpJob: clearing SMTP slave pool 1
kio_smtp(20570)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kmail(20529)/kmail (storage internals) KMFolderMaildir::reallyDoClose: fclose(mIndexStream = 0x1d5fff0 )
kmail(20529) KMail::Vacation::~Vacation: ~Vacation()
kmail(20529)/kmail (storage internals) KMFolderMaildir::reallyDoClose: fclose(mIndexStream = 0x144bb20 )
kmail(20529)/kmail (storage internals) KMFolderMaildir::reallyDoClose: fclose(mIndexStream = 0x14276f0 )
kmail(20529) KMKernel::~KMKernel:
kio_http(20558)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kio_http(20558)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kio_http(20559)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kio_http(20559)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kio_http(20559)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kio_http(20558)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
After some testing using KDE 4.3 in Kubuntu karmic I can now confirm that Malte's fix works also for kmail. In fact, all kio slaves (like kio_http, kio_smtp) that use the KTcpSocket class correctly support with this fix self-signed certificates.
Kmail correctly uses the certification list that is connected by the symbolic link fix. See extract of the debug log:
kmail(20529) KMComposeWin: :doSend: Plain text :doSend: Calling applyChanges() :applyChanges: Entering ::applyChanges: KMAIL_DEBUG_ COMPOSER_ CRYPTO = FALSE ::breakLinesAnd ApplyCodec: Added an <LF> on the last line ::breakLinesAnd ApplyCodec: Added an <LF> on the last line ::composeMessag e: Starting to compose message ::composeMessag e: mEarlyAddAttach ments= false mAllAttachments AreInBody= false ::addBodyAndAtt achments: Set top level Content-Type from originalContent TypeStr( )= "Text/Plain; "us-ascii" " :slotContinueDo Send: true ::addMsgInterna l: FolderStorage: :msgStatusChang ed ::getDwString: KDE_fopen(abs_file= "/home/ solkraftwerk/ .kde/share/ apps/kmail/ mail/outbox/ cur/1264549308. 20529.6aSVn" , "r") == stream == 0x289af80 ::getDwString: fclose(mIndexStream = 0x289af80 ) /kdepimlibs (mailtransport) MailTransport: :Transport: :Transport: "1254495839" :createSlave: createSlave "smtp" for KUrl("smtp://<email address hidden> :25/send? headers= 0&<email address hidden>&<email address hidden> &hostname= Mark-Aurel. gas.de& size=426" ) Server: :listenForRemot e: Listening on "local: /tmp/ksocket- solkraftwerk/ kmailw20529. slave-socket" 13962)/ kio (KLauncher) KLauncher: :requestSlave: KLauncher: launching new slave "kio_smtp" with protocol= "smtp" args= ("smtp", "local: /tmp/ksocket- solkraftwerk/ klauncherT13962 .slave- socket" , "local: /tmp/ksocket- solkraftwerk/ kmailw20529. slave-socket" )
kmail(20529) KMComposeWin:
kmail(20529) KMComposeWin:
kmail(20529) MessageComposer
kmail(20529) MessageComposer
kmail(20529) MessageComposer
kmail(20529) MessageComposer
kmail(20529) MessageComposer
kmail(20529) MessageComposer
charset=
kmail(20529) KMComposeWin:
kmail(20529) KMFolderMaildir
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529)
kmail(20529)/kio (Slave) KIO::Slave:
kmail(20529)/kio (KIOConnection) KIO::Connection
klauncher(
klauncher( 13962)/ kio (KLauncher) KLauncher: :processRequest Return: "kio_smtp" (pid 20570) up and running. /kdepimlibs (mailtransport) MailTransport: :SmtpJob: :startSmtpJob: Created new SMTP slave 0x28a4ae0 :cleanupAutoSav e: deleting autosave file "1264549295. 20529.CDuGd" ::removeFile: Can't delete "/home/ solkraftwerk/ .kde/share/ apps/kmail/ autosave/ new/1264549295. 20529.CDuGd" "No such file or directory" se::disconnectF romHost: smtp(20570) /kssl KSslCertificate ManagerPrivate: :loadDefaultCaC ertificates: Loading 155 CA certificates from ("/usr/ share/kde4/ apps/kssl/ ca-bundle. crt") </b> 20570)/ kssl KTcpSocket: :showSslErrors: "The host name did not match any of the valid hosts for this certificate" 20570)/ kssl KIO::TCPSlaveBa se::startTLSInt ernal: Cipher info - advertised SSL protocol version 8 negotiated SSL protocol version 8 authenticationM ethod: "RSA" encryptionMethod: "AES" keyExchangeMethod: "DH" name: "DHE-RSA- AES256- SHA" supportedBits: 256 usedBits: 256 :canResume: offset= "0" ::reallyDoClose : fclose(mIndexStream = 0x28aba30 ) ::reallyDoClose : fclose(mIndexStream = 0x2142120 ) /kdepimlibs (mailtransport) MailTransport: :SmtpJob: :~SmtpJob: clearing SMTP slave pool 1 se::disconnectF romHost: ::reallyDoClose : fclose(mIndexStream = 0x1d5fff0 ) Vacation: :~Vacation: ~Vacation() ::reallyDoClose : fclose(mIndexStream = 0x144bb20 ) ::reallyDoClose : fclose(mIndexStream = 0x14276f0 ) :~KMKernel: se::disconnectF romHost: se::disconnectF romHost: se::disconnectF romHost: se::disconnectF romHost: se::disconnectF romHost: se::disconnectF romHost:
kmail(20529)
kmail(20529) KMComposeWin:
kmail(20529) KMFolderMaildir
kio_smtp(20570)/kio (TCPSlaveBase) KIO::TCPSlaveBa
<b>kio_
kio_smtp(
kio_smtp(
kio_smtp(20570)/kio (kioslave) KIO::SlaveBase:
kmail(20529) KMSender::cleanup:
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529)
kio_smtp(20570)/kio (TCPSlaveBase) KIO::TCPSlaveBa
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529) KMail::
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529)/kmail (storage internals) KMFolderMaildir
kmail(20529) KMKernel:
kio_http(20558)/kio (TCPSlaveBase) KIO::TCPSlaveBa
kio_http(20558)/kio (TCPSlaveBase) KIO::TCPSlaveBa
kio_http(20559)/kio (TCPSlaveBase) KIO::TCPSlaveBa
kio_http(20559)/kio (TCPSlaveBase) KIO::TCPSlaveBa
kio_http(20559)/kio (TCPSlaveBase) KIO::TCPSlaveBa
kio_http(20558)/kio (TCPSlaveBase) KIO::TCPSlaveBa