PURPOSE
=======
We want to be able to authenticate our servers with a certificate
for the entire domain name instead of using a username and a password.
SPECIFICATIONS
==============
Add 2 fields on the `ir.mail_server`, which are
- the SSL certificate
- the SSL private key
When we uploaded both files, we use them to authenticate the client of
the SSL connection.
Add 2 options on the Odoo binary, so we can provide the filenames of both
files (like we do for the SMTP username/password).
SETTINGS
========
Note that this type of authentication doesn't work locally for Microsoft
office 365. It seems like Microsoft is blocking non-static IP address
(not able to ping the host locally, but it works on the server).
The host name of the server is defined in the MX DNS record. Then, on
Office 365 you must create an SMTP relay based on a certificate and not
based on a hard coded IP address. The certificate must be valid for your
domain name.
e.g.
Host: openerp-org.mail.protection.outlook.com
Port: 25
Username: <keep it blank>
Password: <keep it blank>
Security: STARTTLS
Email: admin@odoobe.com
New Python dependence
=====================
The standard SSL python library only takes a filename to the certificate
/ private key.
But, we do not want to use attachments and take the full path to the
file (in the filestore) or to create temporary file.
So, we need to use a new library "PyOpenSSL" which allows you to load
a certificate / private key from a byte array.
To make this library work with SMTPLIB we use a wrapper developed
in urllib3 (PyOpenSSLContext).
LINKS
=====
Task-2367946
odoo/odoo#61853
odoo/upgrade#1903
59 lines
1.8 KiB
Plaintext
59 lines
1.8 KiB
Plaintext
Babel==2.6.0
|
|
chardet==3.0.4
|
|
decorator==4.3.0
|
|
docutils==0.14
|
|
ebaysdk==2.1.5
|
|
feedparser==5.2.1
|
|
freezegun==0.3.11; python_version < '3.8'
|
|
freezegun==0.3.15; python_version >= '3.8'
|
|
gevent==1.1.2 ; sys_platform != 'win32' and python_version < '3.7'
|
|
gevent==1.5.0 ; python_version == '3.7'
|
|
gevent==20.9.0 ; python_version >= '3.8'
|
|
gevent==1.4.0 ; sys_platform == 'win32' and python_version < '3.7'
|
|
greenlet==0.4.10 ; python_version < '3.7'
|
|
greenlet==0.4.15 ; python_version == '3.7'
|
|
greenlet==0.4.17 ; python_version > '3.7'
|
|
html2text==2018.1.9
|
|
idna==2.6
|
|
Jinja2==2.10.1; python_version < '3.8'
|
|
# bullseye version, focal patched 2.10
|
|
Jinja2==2.11.2; python_version >= '3.8'
|
|
libsass==0.17.0
|
|
lxml==3.7.1 ; sys_platform != 'win32' and python_version < '3.7'
|
|
lxml==4.3.2 ; sys_platform != 'win32' and python_version == '3.7'
|
|
lxml==4.6.1 ; sys_platform != 'win32' and python_version > '3.7'
|
|
lxml ; sys_platform == 'win32'
|
|
Mako==1.0.7
|
|
MarkupSafe==1.1.0
|
|
num2words==0.5.6
|
|
ofxparse==0.19
|
|
passlib==1.7.1
|
|
Pillow==5.4.1 ; python_version <= '3.7' and sys_platform != 'win32'
|
|
Pillow==6.1.0 ; python_version <= '3.7' and sys_platform == 'win32'
|
|
Pillow==8.1.1 ; python_version > '3.7'
|
|
polib==1.1.0
|
|
psutil==5.6.6
|
|
psycopg2==2.7.7; sys_platform != 'win32' and python_version < '3.8'
|
|
psycopg2==2.8.5; sys_platform == 'win32' or python_version >= '3.8'
|
|
pydot==1.4.1
|
|
python-ldap==3.1.0; sys_platform != 'win32'
|
|
PyPDF2==1.26.0
|
|
pyserial==3.4
|
|
python-dateutil==2.7.3
|
|
pytz==2019.1
|
|
pyusb==1.0.2
|
|
qrcode==6.1
|
|
reportlab==3.5.13; python_version < '3.8'
|
|
reportlab==3.5.55; python_version >= '3.8'
|
|
requests==2.21.0
|
|
zeep==3.2.0
|
|
python-stdnum==1.8
|
|
vobject==0.9.6.1
|
|
Werkzeug==0.16.1
|
|
XlsxWriter==1.1.2
|
|
xlwt==1.3.*
|
|
xlrd==1.1.0; python_version < '3.8'
|
|
xlrd==1.2.0; python_version >= '3.8'
|
|
pypiwin32 ; sys_platform == 'win32'
|
|
pyopenssl==19.0.0
|