протокол_smtp_и_mail_transfer_agent

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
протокол_smtp_и_mail_transfer_agent [2009/05/04 07:34]
val created
протокол_smtp_и_mail_transfer_agent [2011/02/27 18:22]
val removed
Line 1: Line 1:
 ====== Протокол SMTP и Mail Transfer Agent ====== ====== Протокол SMTP и Mail Transfer Agent ======
  
 +===== Пример SMTP диалога =====
 +<​code>​
 +[gate:~] # telnet gate.isp.un 25
 +...
 +HELO gate.corpX.un
 +...
 +MAIL FROM: root@gate.corpX.un
 +...
 +RCPT TO: root@gate.isp.un
 +...
 +DATA
 +...
 +To: root@gate.isp.un
 +Subject: test
 +
 +test
 +.
 +
 +QUIT
 +</​code>​
 +
 +===== Конфигурация службы MTA =====
 +
 +==== Установка и настройка MTA на обработку почты домена hostname ====
 +
 +=== FreeBSD (sendmail) ===
 +<​code>​
 +[gate:~] # more /​usr/​share/​sendmail/​cf/​README
 +
 +[gate:~] # cd /etc/mail
 +
 +[gate:/​etc/​mail] # cat gate.corpX.un.mc
 +OSTYPE(freebsd6)
 +MAILER(local)
 +MAILER(smtp)
 +
 +[gate:/​etc/​mail] # make cf
 +[gate:/​etc/​mail] # make install
 +
 +[gate:/​etc/​mail] # cat /​etc/​rc.conf
 +...
 +sendmail_enable="​YES"​
 +
 +[gate:/​etc/​mail] # /​etc/​rc.d/​sendmail restart
 +</​code>​
 +
 +=== Ubuntu (postfix) ===
 +<​code>​
 +root@gate:​~#​ apt-get install postfix mailutils
 +  General type of mail configuration:​ Internet Site
 +  System mail name: gate.corpX.un
 +
 +root@gate:​~#​ man 5 postconf
 +
 +root@gate:​~#​ cat /​etc/​aliases
 +# Added by installer for initial user
 +# root: student
 +
 +root@gate:​~#​ newaliases
 +</​code>​
 +
 +==== Использование UA mail ====
 +
 +=== Отправка почты ===
 +<​code>​
 +gate# mail root
 +
 +gate# mail root@gate.corpX.un
 +</​code>​
 +
 +=== Чтение почты ===
 +<​code>​
 +gate# mail
 +Mail version 8.1 6/​6/​93. ​ Type ? for help.
 +"/​var/​mail/​root":​ 2 messages 2 new
 +>N  1 user@server.corpX.un ​     Wed Oct 26 16:33  22/​814 ​  "​w"​
 + ​N ​ 2 root@server.corpX.un ​     Wed Oct 26 16:35  12/​425  ​
 +</​code>​
 +
 +=== Команды UA mail ===
 +<​code>​
 +h - список писем
 +номер ​   - читать письмо с указанным номером
 +d 1-4    - удалить письма с 1 по 4
 +d *    - удалить все письма
 +r номер - написать ответ на письмо с указанным номером
 +? - help
 +q    - выход
 +</​code>​
 +
 +==== Настройка MTA на обработку почты домена corpX.un ====
 +
 +=== Настройка DNS ===
 +
 +== FreeBSD ==
 +<​code>​
 +[gate:~] # cd /​etc/​namedb/​master/​
 +</​code>​
 +
 +== Ubuntu ==
 +<​code>​
 +root@gate:​~#​ cd /​var/​cache/​bind/​
 +</​code>​
 +
 +== FreeBSD/​Ubuntu ==
 +<​code>​
 +gate# cat corpX.un
 +$TTL    3h
 +corp13.un. SOA ns root.gate 1 1d 12h 1w 3h
 +        NS      ns
 +        A       ​172.16.1.13
 +...
 +
 +gate# nslookup -q=A corpX.un
 +</​code>​
 +
 +=== Настройка MTA sendmail (FreeBSD) ===
 +<​code>​
 +[gate:/​etc/​mail] # cat gate.corpX.un.mc
 +OSTYPE(freebsd6)
 +FEATURE(use_cw_file)
 +MAILER(local)
 +MAILER(smtp)
 +
 +[gate:/​etc/​mail] # cat local-host-names
 +corpX.un
 +
 +[gate:/​etc/​mail] # make install
 +
 +[gate:/​etc/​mail] # /​etc/​rc.d/​sendmail restart
 +</​code>​
 +
 +=== Настройка MTA postfix (Ubuntu) ===
 +<​code>​
 +root@gate:​~#​ rcsdiff /​etc/​postfix/​main.cf
 +< mydestination = gate.corpX.un,​ localhost.corpX.un,​ , localhost
 +---
 +> mydestination = gate.corpX.un,​ localhost.corpX.un,​ corpX.un, localhost
 +
 +root@gate:​~#​ /​etc/​init.d/​postfix force-reload
 +</​code>​
 +
 +==== Настройка MTA на использование MTA провайдера ====
 +
 +=== sendmail (FreeBSD) ===
 +<​code>​
 +[server:/​etc/​mail] # cat server.corpX.un.mc
 +OSTYPE(freebsd6)
 +define(`SMART_HOST',​ `gate.corpX.un'​)
 +MAILER(local)
 +MAILER(smtp)
 +
 +[server:/​etc/​mail] # make cf
 +[server:/​etc/​mail] # make install
 +[server:/​etc/​mail] # /​etc/​rc.d/​sendmail restart
 +</​code>​
 +
 +=== postfix (Ubuntu) ===
 +<​code>​
 +root@server:​~#​ apt-get install postfix mailutils
 +  General type of mail configuration:​ Internet Site
 +  System mail name: server.corpX.un
 +
 +root@gate:​~#​ cat /​etc/​aliases
 +# Added by installer for initial user
 +# root: student
 +
 +root@gate:​~#​ newaliases
 +
 +root@server:​~#​ rcsdiff /​etc/​postfix/​main.cf
 +35c35
 +< relayhost =
 +---
 +> relayhost = gate.corpX.un
 +</​code>​
 +
 +==== Настройка MTA на релеинг почты из локальной сети ====
 +
 +=== sendmail (FreeBSD) ===
 +<​code>​
 +[gate:/​etc/​mail] # cat gate.corpX.un.mc
 +OSTYPE(freebsd6)
 +FEATURE(use_cw_file)
 +FEATURE(access_db,​ `hash -o -T<​TMPF>​ /​etc/​mail/​access'​)
 +MAILER(local)
 +MAILER(smtp)
 +
 +[gate:/​etc/​mail] # cat access
 +192.168.X ​ RELAY
 +
 +[gate:/​etc/​mail] # make maps
 +[gate:/​etc/​mail] # make install
 +[gate:/​etc/​mail] # /​etc/​rc.d/​sendmail restart
 +</​code>​
 +
 +=== postfix (Ubuntu) ===
 +<​code>​
 +root@gate:​~#​ rcsdiff /​etc/​postfix/​main.cf
 +36c36
 +< mynetworks = 127.0.0.0/8 [::​ffff:​127.0.0.0]/​104 [::1]/128
 +---
 +> mynetworks = 127.0.0.0/8 192.168.13.0/​24
 +</​code>​
 +==== Настройка MTA на релеинг почты домена server.corpX.un ====
 +
 +=== Настройка в DNS MX записей домена server.corpX.un ===
 +<​code>​
 +gate# cat corpX.un
 +
 +server ​    ​A ​      ​192.168.X.10
 +       ​MX ​     2      gate
 +       ​MX ​     1      server
 +
 +</​code>​
 +
 +Альтернативы:​
 +  * Использование DNS View позволяет для внешних хостов указывать один почтовый сервер,​ а внутри другой.
 +  * /​etc/​mail/​mailertable позволяет явно переправить почту с gate на server
 +
 +=== Запуск MTA почтового домена server.corpX.un (FreeBSD) ===
 +<​code>​
 +[server:~] # cat /​etc/​rc.conf
 +...
 +sendmail_enable="​YES"​
 +
 +[server:~] # /​etc/​rc.d/​sendmail restart
 +</​code>​
 +
 +=== Настройка MTA релея sendmail (FreeBSD) ===
 +<​code>​
 +[gate:/​etc/​mail] # cat access
 +...
 +server.corpX.un ​ RELAY
 +
 +[gate:/​etc/​mail] # make maps
 +</​code>​
 +
 +Попробовать команду hoststat
 +
 +Попробовать To:​server.corpX.un ​ RELAY
 +
 +Для решения этой задачи можно использовать /​etc/​mail/​relay-domains
 +
 +=== Настройка MTA релея postfix (Ubuntu) ===
 +<​code>​
 +root@gate:​~#​ rcsdiff /​etc/​postfix/​main.cf
 +40a41
 +> permit_mx_backup = server.corpX.un
 +</​code>​
 +
 +==== Настройка MTA на релеинг почты на основе аутентификации ====
 +[[http://​www.freebsd.org/​doc/​en/​books/​handbook/​smtp-auth.html]]
 +
 +==== Использование почтовых псевдонимов ====
 +
 +=== FreeBSD ===
 +<​code>​
 +[gate:~] # cat /​etc/​mail/​aliases
 +</​code>​
 +
 +=== Ubuntu ===
 +<​code>​
 +root@gate:​~#​ cat /​etc/​aliases
 +</​code>​
 +
 +=== FreeBSD/​Ubuntu ===
 +<​code>​
 +...
 +root: student, val@gate.isp.un
 +...
 +</​code><​code>​
 +gate# newaliases
 +
 +gate# mail root
 +</​code>​
 +
 +==== Использование виртуальных почтовых доменов ==== 
 +
 +Домен server.corpX.un
 +
 +=== Настройка DNS ===
 +<​code>​
 +gate# cat corpX.un
 +...
 +server ​     A       ​192.168.X.10
 +            MX   ​2 ​ gate
 +...
 +</​code>​
 +
 +=== Добавление учетных записей пользователей виртуального домена ===
 +
 +== FreeBSD ==
 +<​code>​
 +[gate:/​etc/​mail] # adduser
 +Username: mailuser
 +
 +shell: nologin
 +
 +</​code>​
 +
 +== Ubuntu ==
 +<​code>​
 +root@gate:​~#​ adduser mailuser
 +...
 +
 +root@gate:​~#​ chsh mailuser
 +...
 +        Login Shell [/​bin/​bash]:​ /​usr/​sbin/​nologin
 +</​code>​
 +
 +=== Настройка MTA на поддержку виртуального домена ===
 +
 +== sendmail (FreeBSD) ==
 +<​code>​
 +[gate:/​etc/​mail] # cat access
 +192.168.X RELAY
 +# server.corpX.un RELAY
 +
 +[gate:/​etc/​mail] # cat local-host-names
 +corpX.un
 +server.corpX.un
 +
 +[gate:/​etc/​mail] # grep virt freebsd.mc
 +
 +[gate:/​etc/​mail] # cat gate.corpX.un.mc
 +OSTYPE(freebsd6)
 +FEATURE(use_cw_file)
 +FEATURE(access_db,​ `hash -o -T<​TMPF>​ /​etc/​mail/​access'​)
 +FEATURE(virtusertable,​ `hash -o /​etc/​mail/​virtusertable'​)
 +MAILER(local)
 +MAILER(smtp)
 +
 +[gate:/​etc/​mail] # cat virtusertable
 +root@server.corpX.un mailuser
 +
 +[gate:/​etc/​mail] # make maps
 +[gate:/​etc/​mail] # make install
 +[gate:/​etc/​mail] # /​etc/​rc.d/​sendmail restart
 +</​code>​
 +
 +== postfix (Ubuntu) ==
 +<​code>​
 +root@gate:​~#​ rcsdiff /​etc/​postfix/​main.cf
 +41c41,42
 +< permit_mx_backup = server.corpX.un
 +---
 +> virtual_alias_domains = server.corpX.un
 +> virtual_alias_maps = hash:/​etc/​postfix/​virtual
 +
 +root@gate:​~#​ cat /​etc/​postfix/​virtual
 +root@server.corpX.un ​    ​mailuser
 +
 +root@gate:​~#​ postmap /​etc/​postfix/​virtual
 +
 +root@gate:​~#​ /​etc/​init.d/​postfix force-reload
 +</​code>​
 +
 +=== Тестирование ===
 +<​code>​
 +gate# mail root@server.corpX.un
 +
 +gate# mail –u mailuser
 +</​code>​