Hướng dẫn cấu hình email vào Odoo khi sử dụng Office 365

Odoo cho phép nhận trực tiếp các email và tạo thành các record tương ứng trong hệ thống (crm opportunities, project task hoặc helpdesk ticket). Việc cấu hình các email dạng này Odoo có hướng dẫn cụ thể, đặc biêt là thực hiện khá đơn giản nếu sử dụng Gsuite (gmail)(hướng dẫn cấu hình Gsuite catchall trên Odoo). Tuy nhiên, một số doanh nghiệp đang dùng Microsoft Office 365 có thể gặp một số khó khăn khi cấu hình phần email này. Bài viết này sẽ chia sẻ một số kinh nghiệm cấu hình cổng NHẬN và GỬI email một cách đơn giản khi sử dụng Microsoft Office 365, đã được triển khai qua một số công ty khác nhau.

(*) Hướng dẫn này áp dụng cho Odoo Online hoặc Odoo.sh phiên bản Enterprise. Hãy làm theo CHÍNH XÁC từng bước. Nếu trong quá trình thực hiện bạn gặp trục trặc, vui lòng gửi email kèm theo mô tả vấn đề chi tiết về [email protected], Max rất vui lòng hỗ trợ các bạn.

Thời gian thực hiện: 60-90 phút. Nếu bạn không quản lý Office 365 / Microsoft Azure Portal thì nên đặt lịch ngồi chung với nhân sự quản lý tài khoản này để tiện cấu hình.

Nội dung:

A. TẠO TÀI KHOẢN EMAIL OFFICE 365, SỬ DỤNG ĐỂ XÁC THỰC NHẬN VÀ GỬI TRONG ODOO

B. ĐĂNG KÝ MICROSOFT APP VÀ THIẾT LẬP AZURE PORTAL
> Lấy Client ID và Client Secret
> Cấu hình Client ID và Client Secret vào Odoo

C. THIẾT LẬP NHẬN EMAIL

D. THIẾT LẬP GỬI EMAIL

A. TẠO TÀI KHOẢN EMAIL OFFICE 365, SỬ DỤNG ĐỂ XÁC THỰC NHẬN VÀ GỬI TRONG ODOO

Truy cập https://admin.microsoft.com/#/homepage 

Nhập các thông tin và mật khẩu như trong hình. Bấm Next sau khi hoàn tất
(*) Lưu ý: mật khẩu này sẽ được dùng khi xác thực đăng nhập trong Odoo

Tài khản này cần 1 license Microsoft 365 business standard để có thể gửi được email

Sau đó bấm next, kiểm tra lại thông tin và bấm Finish Adding.

(**) Nếu công ty yêu cầu bảo mật 2 lớp bằng Microsoft Authenticator thì bạn nên cài sẵn vào máy theo hướng dẫn https://www.youtube.com/watch?v=Q8OzabuNwHI để thực hiện xác thực cho user Notification bên dưới ở các bước C và D.

Truy cập https://admin.microsoft.com/#/homepage > chọn Users > Chọn Active Users (vui lòng làm đúng bước này) > chọn user vừa tạo > Chọn "Mail" > Chọn "Manage email apps" 

Chọn "Authenticated SMTP" và bấm Save changes


B. ĐĂNG KÝ MICROSOFT APP VÀ THIẾT LẬP AZURE PORTAL

Đăng nhập vào Microsoft Azure Portal tại https://portal.azure.com/#home , bạn cần tài khoản có quyền quản trị để thực hiện các thao tác này. Sau đó click vào "View" ở phần Manage Microsoft Entra ID


 Sau đó click vào "+ Add" và chọn "App Registration"

Ở ô Name, bạn có thể nhập "Odoo" hoặc bất cứ tên gì miễn gợi nhớ. Tại Supported Account Types bạn chọn  Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox) như trong hình

Tại phần Redirect URI, chọn Web và nhập đường dẫn theo cấu trúc như sau
https://<odoo base url>/microsoft_outlook/confirm 
(*) Lưu ý: <odoo base url> là tên miền CỦA ODOO cung cấp cho database khi sử dụng bản Online hoặc .sh.
Ví dụ tên miền truy cập của MaxSolution sẽ là https://minhmaxsolution-officemaxsolution.odoo.com/ , sau đó chỉ cần thêm microsoft_outlook/confirm vào phía sau là được.

Click "Register"

Ở menu bên trái màn hình, click "API Permission"

Chọn "+ Add a permission" và chọn tiếp "Microsoft Graph"

Chọn tiếp "Delegated permissions"

Trong khung Search phần Select Permission, nhập SMTP.Send và tick vào ô như trong hình. Sau đó nhấn Add permissions.

Thực hiện tương tự add thêm quyền IMAP.AccessAsUser.All.


Kiểm tra lại bằng cách bấm vào nút Refresh, nếu thấy có đầy đủ các permission cần thiết là thành công.

Sau khi hoàn thành việc gán API Permission, bấm vào Overview ở phía trên bên trái màn hình để thực hiện tiếp bước gán các user được phép sử dụng app này.

Tại menu bên trái chọn "Enterprise Applications"

Chọn "All Applications" tại menu bên trái và chọn lại apps bạn vừa tạo (trong ví dụ này là "MaxSolution - Odoo Connector"

Ở menu bên trái chọn "Users and groups" hoặc chọn thẳng "Assign users and groups" ở phần Getting Started

Bấm "+ Add user / group"

Ở khung search nhập Notification, chọn user đã tạo ở bước A, bấm select

Bấm "Assign"

User xuất hiện ở màn hình này là thành công. 

Hiện tại bạn đã hoàn thành các bước tạo App mới trong Azure, bước tiếp theo bạn cần tạo 1 credential. Credential có thể hiểu là một bộ "mã khóa" giúp Microsoft xác nhận tính hợp lệ khi các hệ thống khác yêu cầu truy cập qua app. Một bộ "mã khóa" này sẽ gồm Client ID và Client Sercret.

Ở màn hình Home https://portal.azure.com/#home, bạn chọn nút View tại phần  Manage Microsoft Entra ID. Tại menu bên trái chọn "App registration", bấm "All Applications", chọn app bạn vừa tạo (Trong ví dụ này là "MaxSolution - Odoo Connector)

Lấy Client ID và Client Secret

Bạn truy cập vào trang quản lý App, menu bên trái sẽ có mục Overview để bạn chọn (Lưu ý: Overview của app sẽ khác với Overview của tài khoản Azure, nhiều bạn hay nhầm phần này)

Application ID chính là CLIENT ID bạn cần lấy
(*) Client ID là khái niệm sử dụng trên Odoo

Bước tiếp theo là tạo Client Secret, Tại menu bên trái, bấm "Certificates & Secret" > chọn Client Secret > chọn "New client Secret" > Nhập Description "Odoo Outgoing Email" > Chọn 365 days (12 months) > Bấm Add

(*) Lưu ý, khi hết hạn bạn phải TẠO MỚI lại secret là cập nhật vào Odoo. Nên bạn cần set lịch cho việc này và đưa vào danh sách bàn giao của team IT (hoặc nhân sự / bộ phận phụ trách công việc này) để renew secret mỗi năm.
(**) Bạn có thể chọn Expires dài hơn. Tuy nhiên, MaxSolution gợi ý nên chọn thời gian ngắn dưới 1 năm để các nhân sự phụ trách không quên vấn đề này (do lâu không làm)

Client Secret là giá trị Value trong hình, KHÔNG PHẢI Secret ID. Cần lưu ý vấn đề này. 
Bấm vào nút Copy để sao chép giá trị Value này.
(*) Client Secret là khái niệm dùng trong Odoo

Bạn copy Client ID và Client Secret ra Notepad và thực hiện bước tiếp theo.


Cấu hình Client ID và Client Secret vào Odoo

(*) Bạn cần quyền Aministator > Setting trong Odoo để thực hiện các bước bên dưới

Tại màn hình chính, truy cập module Apps, tại khung tìm kiếm nhập Outlook và bỏ filter Apps. Module Microsoft Outlook sẽ hiện ra, bấm Activate


Trở lại màn hình chính > Truy cập vào Settings >

Ở menu General Settings bạn kéo chuột xuống tới phần "Custom Email Servers" tick vào nút này > nhập tên miền là đuôi mail vào Alias domain @ > tick chọn Outlook Credentials > Bấm nút Save lần 1 và quay lại màn hình này > Nhập Client ID và ô ID và nhập Client Sercret vào ô Secret > Bấm Save lần 2.


C. CẤU HÌNH NHẬN EMAIL

1. Sử dụng catchall mail:

Đây là cách phổ biến hay được sử dụng, bạn có thể theo hướng dẫn tại link này của Ventor để thực hiện hoặc email về [email protected] chúng tôi có tính phí để cấu hình catch all.

Dù đây là cách phổ biến, nhưng MaxSolution khuyến khích các công ty nên sử dụng cách 2 "Shared Mailbox" sẽ ít ruir ro hơn nếu như công ty bạn không có nhân sự chuyên biệt để quản lý hệ thống Office 365.

Lợi ích khi sử dụng mail catchall:

  • Cấu hình 1 lần, sau đó có thể set các alias một cách chủ động trong odoo khá thuận tiện
  • Hứng toàn bộ các email mà địa chỉ nhận không tồn tại (ví dụ: nhân viên đã nghĩ, khách gửi mail nhưng ghi sai email, v.v..) 

Nhược điểm khi sử dụng mail catch all:

  • Cấu hình phức tạp bao gồm cả việc cấu hình verify tài khoản và tạo app trên Azure
  • Chú ý vấn đề mail loop vô tận khi sử dụng nhiều tên miền email trên 1 tenant Office 365
  • Chú ý vấn đề mail spam, cần phải set policy và bộ lọc phù hợp.

2. Sử dụng Shared Mail Box và forward email:

Lợi ích khi sử dụng Shared Mail box

  • Dễ cấu hình
  • Chạy ổn định

Nhược điểm:

  • Mỗi email alias (ví dụ: mỗi sale team, mỗi helpdesk team, mỗi project) đều phải cấu hình 1 shared mail box độc lập (Lưu ý: shared mailbox KHÔNG bị tính phí user Office 365). 

Cách thực hiện

Bước 1: Trong Odoo tạo 1 alias tương ứng

Tùy theo bạn muốn khi mail được gửi đến thì tạo thành opportunity hay ticket hay task mà cấu hình tương ứng. Ở trong ví dụ này, MaxSolution sẽ thực hiện tạo task khi nhận mail

Chú ý lưu lại email alias này. Hãy sử dụng email với đuôi dạng @xxxxx.odoo.com.
Nếu bạn đang xài tên miền riêng (ví dụ @domain.com) thì odoo sẽ luôn có một tên miền xxxx.odoo.com tương ứng với database mà bạn đang dùng.

Bước 2: Trong office 365, bật cho phép forward email tự động đến tên miền khác.

(*) Các thao tác liên quan đến office 365 cần quyền quản trị hệ thống (admin)

Tại trang https://admin.microsoft.com/#/homepage truy cập Security. Microsoft sẽ mở trang Security ở tab mới.

Truy cập Policies & Rules > Threat Policies > Anti-Spam > chọn "Anti-spam outbound policy (Default)" > kéo chuột xuống dưới cùng sẽ thấy "Edit Protection Settings"


Tại Forwarding Rules chọn "On - Forwarding is enabled" > Bấm Save


Bước 3: Tạo shared mailbox tương ứng


Vào https://admin.microsoft.com/#/homepage chọn Teams & Groups > Shared Mailbox > Bấm Add a shared mailbox


Đặt tên và email tương ứng, Khách hàng sẽ gửi vào mail này để liên hệ với công ty bạn (ví dụ: Sales@ , support@, inquiry@ , hello@, v.v..). Bấm Save Changes

Click vào shared mailbox vừa tạo, tại Email Forwarding, bấm Edit


Tick chọn "Forward all emails sent to this mail box" và nhập email đuôi @xxx.odoo.com mà bạn đã tạo ở bước 1. Bấm save change

Bước 4: Kiểm tra xác nhận thành công


Bạn có thể dùng email cá nhận gửi đến cho 1 email cá nhân khác, cc shared mailbox tạo ở bước 3 (trong ví dụ này là [email protected]). Nếu thành công thì record tương ứng được tạo ra và nếu hai email trao đổi qua lại thì tất cả conversation sẽ được lưu vào record tương ứng.

(*) Lưu ý: do trong ví dụ, MaxSolution sử dụng Project task, nếu ban tạo alias trong helpdesk hay CRM thì cần check ở module tương ứng.



D. CẤU HÌNH GỬI EMAIL

(*) Đối với phần GỬI RA thì ngoài Microsoft Office 365, bạn có thể dùng các cổng gửi SMTP khác của Amazon, Gmail hoặc bất kỳ SMTP service nào phù hợp.

Truy cập Odoo của bạn, tại khung đường dẫn, bạn thêm debug=asset vào giữa dấu ? và dấu # để truy cập Developer Mode của odoo.

Tại màn hình chính của Odoo, bạn GÕ THẲNG VÀO BÀN PHÍM chữ Outgoing, khung search menu sẽ tự hiện ra. Bạn chọn Outgoing Mail Servers. 

Bạn bấm New

Nhập Tên "Office 365 Outgoing Notification Email"
Tại phần Authenticate with chọn "Outlook OAuth Authentification"
Tại phần username nhập tài khoản đã tạo ở Bước A. TẠO TÀI KHOẢN EMAIL OFFICE 365, SỬ DỤNG ĐỂ XÁC THỰC NHẬN VÀ GỬI TRONG ODOO

Sau đó bấm Connect your Outlook Account

Bạn sẽ được dẫn đến trang đăng nhập của Microsoft. Nhập mật khẩu và password tương ứng (đã tạo ở bước A).
(*) Nếu công ty bạn yêu cầu xác thực tài khoản bằng Microsoft Authenticator, hãy thực hiện hoặc xin xác thực ở người phụ trách user này.

Bấm Accept để cấp quyền cho App

Nếu thành công sẽ thấy nút "Outlook Token Valid"

Bấm "Test Connection" nếu thấy thông báo Connection Test Successful là thành công

Quay lại màn hình chính, truy cập developer mode, tìm System Parameters và truy cập vào

Tại khung tìm kiếm tìm mail.catchall.domain và mail.default.from
> với mail.catchall.domain, đảm bảo giá trị là tên miền đã thiết lập
> với mail.default.from, đảm bảo giá trị là notification

Kiểm tra đảm bảo hoạt động bằng cách vào Contacts > tạo 1 contact với email cá nhân (để gửi mail tới) > Bấm Send Message > Nhập nội dung và gửi. Nếu thành công thì biểu tượng sẽ có màu trắng

Email nhận được sẽ như trong hình

Bạn nên kiểm tra một số trường hợp sử dụng khác như gửi từ CRM, Sales, Purchase Order, Project Task, Helpdesk ticket với các thiết lập như đã hướng dẫn để đảm bảo các luồng mail chạy đúng như mong đợt.

Sử dụng tài khoản Odoo.sh để truy cập các môi trường triển khai