نصب و پیکربندی میل سرور Postfix بر روی Ubuntu 20.04
در این مقاله تصمیم داریم نصب و راهاندازی یک میل سرور بر روی اوبونتو ۲۰.۰۴ را آموزش دهیم. در صورت نیاز و برای راه اندازی ایمیل سرور، از طریق متخصصین اکتوبیت میتوانید با ما در تماس باشید.
در زمان نصب میل سرور در سیستم عامل لینوکس باید به این نکته دقت داشته باشید که از قبل باید برای هر وظیفه، پکیج خود را انتخاب نمایید. این میل سرور به مانند Microsoft Exchange نیست که تنها یک پکیج داشته باشید و شما با نصب آن، تمامی زیرمجموعههای آن را نیز داشته باشید. در لینوکس شما برای هر وظیفهای میتوانید چندین انتخاب داشته باشید. برای نمونه میتوانید به عنوان دیتابیس از Mysql استفاده کنید یا MariaDB یا هر چیز دیگر. یا برای مدیریت اکانتها میتوانید از Postfixadmin استفاده کنید یا ViMbAdmin. ما در این مقاله، آموزش نصب میل سرور را با پکیجهای زیر خواهیم داد:
- Postfix (Mail Transfer Agent)
- Dovecot (Mail Delivery Agent)
- MariaDB (Database)
- PostfixAdmin (Web Based Management tool)
- Roundcube (Webmail)
- Nginx (Web Server)
- Phpmyadmin (Administration tool for MariaDB)
- SpamAssassin (E-mail spam filtering)
در این مقاله فرض بر این است که میل سرور برای دامین actobit.com نصب میشود. شما هر جا که این عبارت را مشاهده نمودید، آن را به دامین خود تغییر دهید.
در تصویر زیر نمایی از نحوه عملکرد میل سرور موضوع این مقاله و مدیریت آن را مشاهده مینمایید:
فهرست مطالب
پیشنیازها
- نصب اوبونتو ۲۰.۰۴ و بهروزرسانی آن
- ساخت رکوردهای مربوط به میل سرور در DNS مانند A Record و MX Record
- دسترسی به کاربر Root
- باز کردن پورتهای مورد نیاز میل سرور بر روی فایروال (پورتهای ۲۵ – ۴۶۵ – ۱۱۰ – ۵۸۷ – ۱۴۳ – ۹۹۳ – ۹۹۵ – ۸۰ – ۴۴۳)
- ست کردن hostname به آدرس mail.actobit.com
نصب پکیجها
ابتدا با استفاده از دستور زیر پکیجهای مهم را نصب میکنیم:
#apt install nginx mariadb-server php7.4-cli php7.4-fpm php7.4-json php7.4-common php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml php-pear php7.4-bcmath
بعد از اتمام مراحل نصب پکیجها، در مرحلهی بعد باید دیتابیس را برای Postfixadmin پیکربندی نماییم:
#mysql_secure_installation
در این مرحله سوالاتی پرسیده میشود. در پاسخ اولین سوال باید پسورد کاربر root را وارد نماییم. در پاسخ سوال دوم نیز y را زده تا پسورد جدید برای کاربر root در دیتابیس وارد کنیم. پاسخ سایر سوالات را نیز در جلوی آنها قرار دادهایم:
Enter current password for root
Change the root password? y
Remove anonymous users? y
Disallow root login remotely? y
Remove test database and access to it? y
Reload privilege tables now? y
اگر در پایان، پیغام زیر را مشاهده نمودید یعنی عملیات موفقیت آمیز بوده است:
Thanks for using MariaDB!
با زدن دستور زیر و وارد نمودن پسورد جدیدی که ست کردهاید، باید بتوانید به دیتابیس وصل شوید. در ادامه اقدام به ساخت یک دیتابیس مینماییم:
mysql -u root -p
CREATE DATABASE actodb;
grant all privileges on actodb.* to actouser@’localhost’ identified by ‘Password’;
FLUSH PRIVILEGES;
\q
نکته: به جای actodb و actouser نام خود را برای دیتابیس و نام کاربری وارد نمایید. همچنین به جای Password باید یک پسورد برای دیتابیس وارد نمایید.
یک نام کاربری و یک گروه با نام vmail با آی دی ۵۰۰۰ میسازیم. از این کاربر برای مدیریت Virtual Mail Directories استفاده میشود. همچنین در این آموزش فرض میشود که از آدرس vmail/ برای محل ذخیرهسازی میل باکسها استفاده میشود. در صورتی که آدرس شما متفاوت است، باید آن را اصلاح نمایید.
#groupadd -g 5000 vmail
#useradd -g vmail -u 5000 vmail -d /vmail/
#chown -R vmail:vmail /vmail
نصب و پیکربندی Postfixadmin
نرمافزار Postfixadmin یک رابط مبتنی بر وب برای پیکربندی و مدیریت Postfix است. با استفاده از این نرمافزار که تحت لایسنس GNU GPL عرضه شده، میتوان ایمیل کاربران را ایجاد یا پاک کرد و یا ظرفیت آنها را مدیریت کرد.
این نرمافزار بر روی مخزنهای اوبونتو وجود ندارد. برای همین باید آن را با استفاده از دستور زیر دانلود نماییم:
#wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz -O PostfixAdmin-tar.gz
#tar -xvf PostfixAdmin-tar.gz
#cp -r postfixadmin-postfixadmin-7d04685/ /var/www/html/postfixadmin
#mkdir /var/www/html/postfixadmin/templates_c
#chmod 755 -R /var/www/html/postfixadmin/templates_c
#chown -R www-data:www-data /var/www/html/postfixadmin/templates_c/
#cp /var/www/html/postfixadmin/config.inc.php /var/www/html/postfixadmin/config.local.php
#vim /var/www/html/postfixadmin/config.local.php
موارد زیر را وارد فایل config.local.php میکنیم:
config.local.php
$CONF[‘configured’] = true;
$CONF[‘database_type’] = ‘mysqli’;
$CONF[‘database_host’] = ‘localhost’;
$CONF[‘database_user’] = ‘actouser’;
$CONF[‘database_password’] = ‘Password’;
$CONF[‘database_name’] = ‘actodb’;
در مرحلهی بعد باید Nginx را پیکربندی نماییم. فایل postfixadmin.conf را ساخته و سایر اطلاعات را از زیر وارد آن میکنیم:
#vim /etc/nginx/sites-available/postfixadmin.conf
postfixadmin.conf
server {
listen 80;
server_name mail.actobit.com;
root /var/www/html/postfixadmin/public;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
فایل را ذخیره و از آن خارج میشویم. سپس باید به فایل جدید قابلیت اجرایی داده و سرویس Nginx را مجدد راهاندازی نماییم:
#unlink /etc/nginx/sites-enabled/default
#ln -s /etc/nginx/sites-available/postfixadmin.conf /etc/nginx/sites-enabled/
#systemctl restart nginx
#systemctl status nginx
بعد از پایان پیکربندی، از طریق آدرس زیر وارد مرحله نصب Postfixadmin میشویم:
http://mail.actobit.com/setup.php
در این صفحه باید یک Setup Password ساخته و با کلیک بر روی دکمه Generate setup_password hash، نسخه hash آن را تولید کنید.
پس از تولید hash، آن را در پایین صفحه مشاهده خواهید نمود. آن را کپی کرده و در فایل config.local.php در قسمت $CONF[‘setup_password’] وارد نمایید. مطابق مثال زیر:
$CONF[‘setup_password’] = ‘$2y$10$5R3eWgEi6XxDpj8Ev/fOd5el6HZtet17fs.TTBONjH4JZvB6dhkgy’;
بعد از وارد نمودن پسورد hash، صفحه را refresh کنید. اگر همه چیز درست باشد، یک قسمت دیگر به نام Login with setup_password فعال میشود. مجدد Setup Password را در این قسمت وارد نموده و کلیک نمایید.
در صفحهی جدید بسیاری از پکیجها مانند php و mysql چک شده و در صورتی که مشکلی نباشد، تیک سبز در کنارشان نشان میدهد. همچنین در پایین صفحه و در قسمت Add Superadmin Account، باید یک کاربر سوپر ادمین برای لاگین به پنل ادمین postfixadmin بسازید. باید این کار را انجام دهید و یوزر و پسورد آن را در جایی ذخیره نمایید.
به خاطر داشته باشید که فایل setup.php را نیز برای افزایش امنیت، پاک نمایید:
#rm -vf /var/www/html/postfixadmin/public/setup.php
در پایان باید مجدد در تنظیمات فایل پیکربندی Nginx و در قسمت خط آبی رنگ، تغییری اعمال نمایید:
#vim /etc/nginx/sites-available/postfixadmin.conf
postfixadmin.conf
server {
listen 80;
server_name mail.actobit.com;
root /var/www/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
از این به بعد میتوانید از آدرس زیر وارد پنل Postfixadmin شوید:
http://mail.actobit.com/postfixadmin/public
آموزش پاک کردن اتوماتیک دایرکتوری اکانت کاربران
نرمافزار postfixadmin هیچگونه دسترسی به دایرکتوری اکانت ایمیل کاربران ندارد و به همین دلیل وقتی اکانتی را از این نرم افزار پاک میکنید، همچنان دایرکتوری آن باقی میماند. اما راهحلهایی برای رفع این مشکل وجود دارد که در زیر یکی از آنها را آموزش میدهیم:
ابتدا فایل زیر را برای ویرایش باز میکنیم:
#vim /var/www/html/postfixadmin/ADDITIONS/mailbox_remover.pl
محتویات مهمی که باید تغییر کنند را طبق دستورات زیر تغییر میدهیم:
mailbox_remover.pl
my $maildir_path=”/vmail”;
my $pfadmin_config=”/var/www/html/postfixadmin/config.inc.php”;
# database information
my $host=”localhost”;
my $port=”3306″;
my $userid=”actouser”;
my $passwd=”Password”;
my $db=”actodb”;
پکیج زیر را نیز نصب میکنیم:
#apt-get install libdbd-mysql-perl
با اجرای این دستور میتوانیم از عملکرد صحیح این دستور اطمینان حاصل نماییم:
#perl /var/www/html/postfixadmin/ADDITIONS/mailbox_remover.pl
درنهایت باید خطوط زیر را در فایل crontab قرار دهیم تا به صورت دورهای اجرا شوند:
۰ ۱۰ * * ۵ root perl /var/www/html/postfixadmin/ADDITIONS/mailbox_remover.pl
۰ ۱۰ ۲۹ ۱-۱۲ * root rm -rvf /var/archive/mailboxes/*
نصب و پیکربندی Roundcube
این نرمافزار یک سرویس گیرنده ایمیل (Webmail) متن باز و رایگان است که با امکانات کامل و به زبان PHP نوشته شده است. به عبارت بهتر، وب میل یک سرویس گیرنده ایمیل در مرورگر شما است، به این معنی که به جای خواندن و ارسال ایمیل از یک سرویس گیرنده ایمیل دسکتاپ مانند Outlook یا Thunderbird، میتوانید از طریق مرورگر وب، به ایمیل خود دسترسی داشته باشید.
#wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz
#tar -xvf roundcubemail-1.5.2-complete.tar.gz
#mv roundcubemail-1.5.2 /var/www/html/webmail
#apt install php-net-ldap2 php-net-ldap3 php-imagick php7.4-common php7.4-gd php7.4-imap php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-gmp
#apt install composer
#cd /var/www/html/webmail
با زدن دستور زیر تمام پیشنیازهای roundcubemail نصب میشوند. اگر در پایان، عبارت Nothing to install or update را دیدید یعنی تمام پیشنیازها نصب شدهاند.
#composer install –no-dev
#chown www-data:www-data temp/ logs/ -R
برای نصب roundcubemail، آدرس زیر را در مرورگر خود وارد نمایید:
https://mail.actobit.com/webmail/installer/
مراحل را به ترتیب طی نمایید. در قسمت Database setup، اطلاعات مربوط به دیتابیس ساخته شده در مراحل قبل را وارد نمایید. همچنین یکسری پلاگین نیز وجود دارد که هر کدام برای کار خاصی طراحی شده که در جلوی آن نوشته شده است. میتوانید در این قسمت اقدام به فعالسازی آنها نمایید. بعد از اتمام پیکربندی، یک فایل با نام config.inc.php ساخته میشود که باید آن را دانلود کرده و به آدرس /var/www/html/webmail/config/ منتقل نمایید. البته اگر بر روی دکمه Save in /tmp کلیک کنید، یک کپی از آن در شاخهی tmp/ قرار میگیرد، سپس میتوانید با استفاده از دستور زیر آن را منتقل نمایید:
#mv /tmp/config.inc.php /var/www/html/webmail/config/
بعد از انتقال فایل به مرورگر برگشته و بر روی Continue کلیک مینماییم. در صفحه جدید بر روی Initialize database کلیک کرده تا عملیات پیکربندی تکمیل گردد.
خطای SMTP Error (250): Authentication failed
گاهی اوقات بعد از وارد شدن به اکانت ایمیل از طریق Roundcube، در زمان ارسال ایمیل، با این خطا مواجه میشوید. برای رفع این مشکل فایل پیکربندی defaults.inc.php را باز نموده و تنظیمات پارامترهای زیر را مطابق چیزی که مشخص شده، تغییر میدهیم:
#vim /var/www/html/webmail/config/defaults.inc.php
defaults.inc.php
$config[‘smtp_server’] = ‘tls://mail.actobit.com‘;
$config[‘smtp_port’] = 587;
$config[‘smtp_auth_type’] = ‘LOGIN’;
$config[‘smtp_user’] = ‘%u’;
$config[‘smtp_pass’] = ‘%p’;
در پایان و به دلیل اینکه دایرکتوری installer اطلاعات بسیار مهمی مانند پسوردها و تنظیمات پیکربندیها را افشا میکند، اقدام به پاک نمودن آن مینماییم:
#rm -rvf /var/www/html/webmail/installer/
حال میتوانیم از طریق آدرس زیر وارد وب میل شویم:
https://mail.actobit.com/webmail/
تبریک، نصب و پیکربندی roundcube نیز تمام شد!
نصب و پیکربندی phpMyAdmin
این نرمافزار یک ابزار تحت وب برای مدیریت Mysql و Mariadb است که به زبان PHP و جاوا اسکریپت نوشته شده است. امروزه این ابزار به یکی از محبوبترین ابزارهای مورد استفاده در وب هاستینگها تبدیل شده است. نسخه اولیه آن در سال ۱۹۹۸ و تحت لایسنس GNU GPL عرضه شد.
#apt install phpmyadmin
در پروسه نصب از شما پرسیده میشود که میخواهید این برنامه را بر روی apache یا Lighttpd نصب کنید. با توجه به این که ما پیش از این Nginx نصب کردهایم، هیچ گزینهای را انتخاب نمیکنیم و بر روی OK کلیک میکنیم.
در پاسخ به سوال Configure database for phpmyadmin with dbconfig-common نیز Yes میزنیم. در مرحله بعد یک پسورد نیز وارد میکنیم.
#ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
اکنون میتوانید از طریق آدرس زیر و با یوزرنیم و پسورد تعیین شده برای دیتابیس actodb، وارد نرمافزار شوید.
https://mail.actobit.com/phpmyadmin/
نصب و پیکربندی Postfix
نرمافزار Postfix یکی از MTAهای معروف است که بهصورت اپن سورس عرضه شده و برای ارسال ایمیل استفاده میشود. اولین نسخه آن در سال ۱۹۹۷ نوشته شد و یک سال بعد یعنی در سال ۹۸ به بازار عرضه شد. این نرمافزار با نامهای VMailer و IBM Secure Mailer نیز شناخته میشود. در سال ۲۰۲۱ و بعد از یک بررسی جامع از میل سرورها در سرتاسر دنیا که توسط E-Soft انجام شد، تقریباً ۳۲ درصد سرورهای دنیا از Postfix استفاده میکردند. این یعنی رتبه دوم بعد از نرمافزار Exim.
اولین لایه در Postfix یک لایه دفاعی در مقابل اسپمها و بدافزارها است و به همین دلیل امنیت پیادهسازی شده در آن مثال زدنی است. این نرمافزار بر روی هر سیستم عامل مبتنی بر یونیکس قابل پیادهسازی است، سیستم عاملهایی مانند لینوکس، Solaris، MacOS، BSD و AIX.
#apt install postfix postfix-mysql sasl2-bin
در فرآیند نصب Postfix باید آدرس دومین میل سرور را وارد کنید که در مثال ما mail.actobit.com است.
فایل اصلی پیکربندی Postfix با نام main.cf است. مطابق اطلاعات زیر، اقدام به پر کردن آن نمایید:
#vim /etc/postfix/main.cf
main.cf
myhostname = mail.actobit.com
mydomain = actobit.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname localhost.$mydomain localhost
local_recipient_maps =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 172.30.1.0/24 172.22.0.0/21
mailbox_size_limit = 0
recipient_delimiter = +
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
append_dot_mydomain = no
readme_directory = no
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_authenticated_header = yes
smtpd_tls_cert_file=/etc/nginx/ssl/fullchain.crt
smtpd_tls_key_file=/etc/nginx/ssl/priv.key
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
message_size_limit = 104857600
virtual_mailbox_limit = 40000000
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
unknown_local_recipient_reject_code = 550
maximal_queue_lifetime = 1d
minimal_backoff_time = 1000s
maximal_backoff_time = 8000s
smtp_helo_timeout = 60s
smtpd_recipient_limit = 16
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
permit
smtpd_data_restrictions =
reject_unauth_pipelining,
permit_sasl_authenticated
smtpd_sender_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
smtpd_client_restrictions =
permit_sasl_authenticated,
smtpd_delay_reject = yes
disable_vrfy_command = yes
smtpd_recipient_restrictions =
reject_unknown_sender_domain,
reject_unauth_pipelining,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unknown_recipient_domain,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client combined.abuse.ch
reject_invalid_hostname,
permit_mx_backup,
permit
virtual_mailbox_base = /vmail
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
smtpd_sender_login_maps = mysql:/etc/postfix/mysql_virtual_sender_login_maps.cf
virtual_transport = dovecot
transport_maps = hash:/etc/postfix/transport
dovecot_destination_recipient_limit = 1
policy-spf_time_limit = 3600s
header_checks = regexp:/etc/postfix/header_checks
enable_original_recipient = no
هر کدام از فایلهای زیر را با محتویات تعیین شده میسازیم:
#vim /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
#chmod 755 /etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
mysql_virtual_alias_domainaliases_maps.cf
user = actouser
password = Password
hosts = 127.0.0.1
dbname = actodb
query = SELECT goto FROM alias,alias_domain
WHERE alias_domain.alias_domain = ‘%d’
AND alias.address=concat(‘%u’, ‘@’, alias_domain.target_domain)
AND alias.active = 1
#vim /etc/postfix/mysql_virtual_alias_maps.cf
#chmod 755 /etc/postfix/mysql_virtual_alias_maps.cf
mysql_virtual_alias_maps.cf
user = actouser
password = Password
hosts = 127.0.0.1
dbname = actodb
table = alias
select_field = goto
where_field = address
additional_conditions = and active = ‘1’
#vim /etc/postfix/mysql_virtual_domains_maps.cf
#chmod 755 /etc/postfix/mysql_virtual_domains_maps.cf
mysql_virtual_domains_maps.cf
user = actouser
password = Password
hosts = 127.0.0.1
dbname = actodb
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = ‘0’ and active = ‘1’
#vim /etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
#chmod 755 /etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
mysql_virtual_mailbox_domainaliases_maps.cf
user = actouser
password = Password
hosts = 127.0.0.1
dbname = actodb
query = SELECT maildir FROM mailbox, alias_domain
WHERE alias_domain.alias_domain = ‘%d’
AND mailbox.username=concat(‘%u’, ‘@’, alias_domain.target_domain )
AND mailbox.active = 1
#vim /etc/postfix/mysql_virtual_mailbox_maps.cf
#chmod 755 /etc/postfix/mysql_virtual_mailbox_maps.cf
mysql_virtual_mailbox_maps.cf
user = actouser
password = Password
hosts = 127.0.0.1
dbname = actodb
table = mailbox
select_field = CONCAT(domain, ‘/’, local_part)
where_field = username
additional_conditions = and active = ‘1’
#vim /etc/postfix/mysql_virtual_sender_login_maps.cf
#chmod 755 /etc/postfix/mysql_virtual_sender_login_maps.cf
mysql_virtual_sender_login_maps.cf
user = actouser
password = Password
hosts = 127.0.0.1
dbname = actodb
query = SELECT goto FROM alias WHERE address=’%s’
فایل master.cf نیز یکی از فایلهای بسیار مهم در پیکربندی postfix است. این که چه سرویسهایی اجرا شوند و چگونه، همگی در این فایل تعیین میشوند. نمونهای از پیکربندی این فایل در زیر آمده است:
#vim /etc/postfix/master.cf
master.cf
smtp inet n – y – – smtpd
submission inet n – y – – smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n – – – – smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
pickup unix n – y 60 1 pickup
cleanup unix n – y – 0 cleanup
qmgr unix n – n 300 1 qmgr
#qmgr unix n – n 300 1 oqmgr
tlsmgr unix – – y 1000? 1 tlsmgr
rewrite unix – – y – – trivial-rewrite
bounce unix – – y – 0 bounce
defer unix – – y – 0 bounce
trace unix – – y – 0 bounce
verify unix – – y – 1 verify
flush unix n – y 1000? 0 flush
proxymap unix – – n – – proxymap
proxywrite unix – – n – 1 proxymap
smtp unix – – y – – smtp
relay unix – – y – – smtp
-o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n – y – – showq
error unix – – y – – error
retry unix – – y – – error
discard unix – – y – – discard
local unix – n n – – local
virtual unix – n n – – virtual
lmtp unix – – y – – lmtp
anvil unix – – y – 1 anvil
scache unix – – y – 1 scache
postlog unix-dgram n – n – 1 postlogd
dovecot unix – n n – – pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
maildrop unix – n n – – pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix – n n – – pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender – $nexthop!rmail ($recipient)
ifmail unix – n n – – pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix – n n – – pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix – n n – 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix – n n – – pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
نصب و پیکربندی SpamAssassin
این برنامه که توسط آپاچی پشتیبانی میشود، برای اولین بار در سال ۲۰۰۱ و مخصوص فیلترینگ ایمیلهای اسپم عرضه شد. برنامه اسپم اساسین بهصورت رایگان و تحت زبان برنامهنویسی C و Perl نوشته شده است. SpamAssassin را هم میتوان با میل سرورها ادغام کرد تا به صورت اتوماتیک، فیلترینگ خود را انجام دهد و هم کاربر میتواند از طریق ادغام آن با برنامههای چک کردن ایمیل، از آن صرفاً برای اسکن ایمیلهای خود استفاده کند.
این برنامه از تکنیکهای مختلف پیدا کردن اسپم استفاده میکند که مهمترین آنها عبارتند از:
- DNS and fuzzy checksum techniques
- Bayesian filtering
- External programs
- Blacklists and online databases
#apt-get install spamassassin spamc -y
#adduser spamd –disabled-login
فایل پیکربندی spamassassin را باز کرده و مطابق اطلاعات زیر آن را تغییر دهید:
#vim /etc/default/spamassassin
spamassassin
OPTIONS=”–create-prefs –max-children 5 –username spamd –helper-home-dir /home/spamd/ -s /home/spamd/spamd.log”
PIDFILE=”/var/run/spamd.pid”
CRON=1
#mv /etc/spamassassin/local.cf /etc/spamassassin/local.cf.bk
فایل پیکربندی local.cf را ساخته و اطلاعات زیر را در داخل آن قرار دهید:
#vim /etc/spamassassin/local.cf
local.cf
rewrite_header Subject ***** SPAM _SCORE_ *****
report_safe 0
required_score 5.0
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
endif
باید تغییراتی در تنظیمات Postfix انجام دهیم تا بتواند بهصورت اتوماتیک از SpamAssassin استفاده کند.
#vim /etc/postfix/master.cf
در فایل مربوطه، خطوط قرمز را پیدا کرده و اطلاعات با رنگ آبی را به زیر آنها اضافه نمایید:
master.cf
smtp inet n – y – – smtpd
-o content_filter=spamassassin
spamassassin unix – n n – – pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
submission inet n – y – – smtpd
-o content_filter=spamassassin
spamassassin unix – n n – – pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
smtps inet n – – – – smtpd
-o content_filter=spamassassin
spamassassin unix – n n – – pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
#systemctl restart postfix
#systemctl enable spamassassin
#systemctl start spamassassin
نصب و پیکربندی Dovecot
داوکات (Dovecot) نرم افزاری است که در Mail Serverهای لینوکسی به عنوان سرویس IMAP و POP3 مورد استفاده قرار میگیرد و ایمیلهای ورودی را به mailbox کاربران منتقل میکند. همچنین، وظیفهی authenticate کردن کاربران را نیز بر عهده دارد. این نرمافزار در سال ۲۰۰۲ و با زبان برنامهنویسی C منتشر شد. پیشبینی میشود بین ۷۰ تا ۸۰ سرورهای IMAP از این نرمافزار استفاده میکنند. این سرور از استانداردهای Maildir، mbox و dbox پشتیبانی میکند.
در Dovecot، انتقال ایمیلهای دریافتی از Postfix به میل باکسهای کاربران، از طریق یکی از دو روش زیر انجام میگیرد:
۱ – LDA (Local Delivery Agent) – Main Configuration file: /etc/dovecot/conf.d/15-lda.conf
۲ – LMTP (Local Mail Transfer Protocol) – Main Configuration file: /etc/dovecot/conf.d/20-lmtp.conf
این دو روش شباهتهای زیادی با یکدیگر دارند، اما در عملکرد، تفاوتهایی نیز وجود دارد که با توجه به نیاز خودتان میتوانید یکی از روشها را انتخاب نمایید. ما در این مقاله آموزشی از روش LDA استفاده میکنیم.
#apt install dovecot-imapd dovecot-pop3d dovecot-mysql dovecot–core dovecot-lmtpd
#vim /etc/dovecot/dovecot.conf
در داخل فایل dovecot.conf به دنبال خط زیر باشید:
!include_try /usr/share/dovecot/protocols.d/*.protocol
این خط بیانگر این است که چه پروتکلهایی پشتیبانی شوند. اگر به آدرس گفته شده در این خط بروید، احتمالاً دو فایل با نامهای imap و pop3 خواهید دید که نشانگر این است که این دو پروتکل فعال هستند.
#vim /etc/dovecot/conf.d/10-auth.conf
خطوط زیر را به فایل ۱۰-auth.conf اضافه میکنیم:
۱۰-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-sql.conf.ext
#vim /etc/dovecot/conf.d/10-mail.conf
در فایل ۱۰-mail.conf باید محل ذخیره میلباکسها را مشخص کنیم. همچنین دستهبندی دایرکتوریها در میلباکسها نیز از همین قسمت مشخص میشود. همانطور که مشاهده میکنید از استاندارد Maildir برای dovecot استفاده میکنیم. اطلاعات زیر را به این فایل اضافه میکنیم:
۱۰-mail.conf
namespace inbox {
inbox = yes
mailbox Trash {
auto = create
special_use = \Trash
}
mailbox Drafts {
auto = create
special_use = \Drafts
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Junk {
auto = create
special_use = \Junk
}
}
mail_home = /vmail/%d/%u
mail_location = maildir:/vmail/%d/%n
mail_privileged_group = vmail
mail_uid = 5000
mail_gid = 5000
first_valid_uid = 5000
last_valid_uid = 5000
#vim /etc/dovecot/conf.d/10-master.conf
بسیاری از محدودیتها، سرویسها، پورتها و دسترسیها در فایل ۱۰-master.conf تعیین میشوند. به همین دلیل پیکربندی درست این فایل از اهمیت زیادی برخوردار است.
۱۰-master.conf
default_process_limit = 500
default_client_limit = 2500
default_vsz_limit = 1024M
service imap-login {
inet_listener imap {
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service imap {
}
service pop3 {
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0666
user = vmail
group = vmail
}
user = dovecot
}
service auth-worker {
user = vmail
}
service dict {
unix_listener dict {
}
}
#vim /etc/dovecot/conf.d/10-ssl.conf
در فایل ۱۰-ssl.conf باید آدرس sslهای ساخته شده را وارد کرد.
۱۰-ssl.conf
ssl_cert = </etc/nginx/ssl/fullchain.crt
ssl_key = </etc/nginx/ssl/priv.key
#vim /etc/dovecot/conf.d/auth-sql.conf.ext
در این فایل تعیین میکنیم که dovecot برای چک کردن یوزر و پسورد باید به سراغ sql برود.
auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
…
userdb {
driver = prefetch
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
#vim /etc/dovecot/dovecot-sql.conf.ext
در فایل dovecot-sql.conf.ext نحوه اتصال به دیتابیس را تعیین میکنیم.
dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=actodb user=actouser password=Password
default_pass_scheme = SHA512-CRYPT
password_query = \
SELECT username as user, password, ‘/vmail/%d/%n’ as userdb_home, \
‘maildir:/vmail/%d/%n’ as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid \
FROM mailbox WHERE username = ‘%u’ AND active = ‘1’
user_query = \
SELECT username as user, password, ‘/vmail/%d/%n’ as userdb_home, \
‘maildir:/vmail/%d/%n’ as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid \
FROM mailbox WHERE username = ‘%u’ AND active = ‘1’
#chown -R vmail:dovecot /etc/dovecot
#chmod -R o-rwx /etc/dovecot
#vim /etc/dovecot/conf.d/15-lda.conf
فایل پیکربندی LDA را باز کرده و مطابق اطلاعات زیر کامل میکنیم:
۱۵-lda.conf
postmaster_address = postmaster@%d
hostname = mail.actobit.com
recipient_delimiter = +
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
mail_plugins = $mail_plugins
}
#vim /etc/dovecot/conf.d/10-director.conf
فایل بالا را باز کرده و با پیدا کردن قسمت service imap-login، اقدام به افزودن اطلاعات زیر نمایید:
۱۰-director.conf
service imap-login {
service_count = 0
process_min_avail = 16
}
#vim /etc/dovecot/conf.d/20-imap.conf
در فایل بالا نیز با قرار دادن اطلاعات زیر، فایل را ویرایش مینماییم:
۲۰-imap.conf
protocol imap {
mail_max_userip_connections = 100
}
#systemctl enable dovecot
#systemctl start dovecot
#systemctl restart dovecot
#systemctl restart postfix
سخن پایانی
ما در این مقاله سعی نمودیم، نصب و راه اندازی میل سرور Postfix در لینوکس را بهطور کامل آموزش دهیم. با این وجود اگر خودتان امکان انجام این کار را ندارید و تصمیم به برون سپاری آن دارید، میتوانید از خدمات لینوکس اکتوبیت استفاده کرده و با پر نمودن فرم مربوطه، درخواست خود را ارسال نمایید. ما در اولین فرصت با شما تماس خواهیم گرفت.