g) Tổng quan quyển luận văn
2.3.1 Thiết lập mail server
Nhƣ đã phân tích ở chƣơng 1, hệ thống quản lý của Myreview dùng hàm mail() của Php, hàm này đƣợc dùng cho tất cả các hoạt động từ gửi mail đến tin nhắn. Với yêu cầu, bảo mật cao, đáp ứng nhu cầu chứng thực của gmail server, trong đề tài này em dùng tiện ích postfix làm mail client của hệ thống.
Các bước thiết lập postfix:
1. Cài đặt postfix, thiết lập các thông số trong khi cấu hình:
- Đầu tiên, ta sẽ thiết lập cấu hình loại mail tổng quát cho postfix, có rất nhiều lựa chọn, trong hệ thống này ta sẽ chọn Internet Site. - Tiếp đến là Tên mail hệ thống (System Mail Name) là tên domain
mail server của hệ thống. Ở đây, do là nghiên cứu nên em thiết lập là gmail.com.
- Tiếp theo là nó sẽ hỏi về SMTP Relay Host. Khi để trống (mặc định), Postfix sẽ phân phát mail qua mạng Internet. Nhƣng có vài trƣờng hợp xảy ra là mail server thật bị sự cố, hay ngắt điện thì lúc này việc gửi mail sẽ bị lỗi hoặc là mail bị đánh dấu là “spam”. Để tránh tình trạng này, ta cần phải cấu hình Postfix phân phát mail qua relayhost.Ở bài nghiên cứu này, em chọn relayhost phân phát thông qua smtp.gmail.com.
- Các phần cài đặt còn lại (giới hạn hộp thƣ, recipient_delimiter, inet_protocols) để mặc định.
2. Vào tập tin cấu hình chính tên main.cf để chỉnh sửa lại giống với nội dung bên dƣới:
Ý nghĩa của các thông số quan trong:
myhostname: tên máy tính (không quan trọng).
mydestination: danh sách các tên miền đƣợc phân phát thông qua một nơi phân phát mail cục bộ của postfix (local_transport).
Inet_interfaces: phải là loopback-only. - Sau đó thêm một vài dòng sau vào main.cf:
Ý nghĩa của các thông số quan trọng:
relayhost: máy chủ SMTP, mail chuyển ra internet thông qua relayhost. Tham số này, để đƣợc gán bằng smtp.gmail.com trong phần cấu hình bằng giao diện, ta chỉ cần thêm cổng 587 vào nhƣ trên.
smtp_sasl_password_maps : là tùy chọn của máy Postfix SMTP tìm một mục username:password trên một hostname hay miền từ xa. Nếu không tìm thấy thì nó không chứng thực host từ xa đó nữa.
smtp_use_tls: sử dụng TLS
smtp_tls_CAfile : đƣờng dẫn chƣa tập tin chứa chứng chỉ CA của CA gốc của máy tính.
3. Sau hoàn thành, ta sẽ tạo ra một tập tin sasl_passwd để nhập email và mật khẩu (lấy email của nhà quản trị) để chứng thực gửi mail. - Nhập vào tập tin này với nội dung:
- Mã hóa tập tin sals_passwd ngay sau đó bằng câu lệnh:
- Rồi xóa đi tập sasl_passwd chính để đảm bảo an toàn. - Tạo tập tin cacert.pem, copy từ:
/etc/ssl/certs/Equifax_Secure_CA.pem
- Sau đó kết thúc bằng việc, reload lại dịch vụ postfix và apache2.
4. Tiếp theo là việc test mail, bằng cách vào hệ thống gửi thử mail, hoặc đơn giản là tạo một tập tin php đơn giản để gửi mail thử. Tất cả nhật ký gửi mail sẽ đƣợc lƣu trong /var/log/mail.log, nếu có lỗi thì vào đây để xem chi tiết.
5. Lỗi về vấn đề mail thì xem ở mail.log, nhƣng có một số vấn đề về server hay hệ thống của postfix thì postfix lại gửi mail thông báo cho mail root (mặc định root@gmail.com là system mail name mà lúc cài đặt postfix ta đã đặt). Để cấu hình Postfix, gửi những mail đó đến một email cụ thể của bạn (email của Admin), thêm dòng sau vào tập tin main.cf:
Tạo tập tin virtual trong postfix, có nội dung:
Lúc này, ta sẽ định tuyến lại các mail hệ thống đến email của bạn (vd:
myreview.tk@gmail.com). Sau đó chạy lệnh:
Tuy rằng, Myreview có xác định ngƣời gửi bên trong ứng dụng nhƣng khi gọi hàm mail() của php, thì tự động php sẽ vào php.ini tìm vào dùng email và password đƣợc thiết lập thông qua đƣờng dẫn của postfix để xác thực, đồng thời dùng email xác thực đó là ngƣời gửi mail.
Mô hình hoạt động mail của postfix (phụ lục 2)
postmap sasl_passwd
[smtp.gmail.com]:587 địa chỉ email đầy đủ:mật khẩu
virtual_alias_maps = hash:/etc/postfix/virtual
root@gmail.com <địa chỉ email muốn nhận thông báo>