Базовая установка и настройка Sendmail на Ubuntu Server

p3

Вряд ли вам нужен web-сервер, который не может отправить почту с вашего сайта. Ниже простой способ быстро развернуть sendmail в качестве MTA ( Mail Transfer Agent ), отправляющего почту для сайта.

Для начала установка

sudo apt-get install sendmail

Второе и самое главное — правильная настройка самого хоста. Почтовику требуется чётко знать какое DNS FQDN имя у хоста и что оно существует на просторах мировой сети.

Предположим, что сервер, на котором работает sendmail имеет IP адрес 123.123.123.123

Также у нас есть доменное имя domainame.com, которое правильно делегировано на IP адрес сервера.

Редактируем файл /etc/hosts, чтобы сервер сам знал своё DNS имя ( естественно, что оно должно быть правильным и реальным )

sudo nano -w /etc/hosts

Вторая строка, которую стоит дописать и есть описание доменного имени сервера, его сопоставление с реальным IP адресом хоста и внутренним системным названием:

127.0.0.1 localhost
123.123.123.123 box1.domainname.com your-web-server

После чего нужно внести изменение в файл /etc/hostname

sudo nano -w /etc/hostname

И вписать туда правильное имя сервера, которое было вписано в /etc/hosts в нашем примере — это your-web-server.

  Установка веб сервера nginx на Ubuntu , linux

Содержимое файла /etc/hostname после редактирования :

your-web-server

После этих действий нужно перезагрузить сервер или выполнить:

/etc/init.d/hostname restart
И выполнить 2 команды:
hostname
hostname -f

Если всё правильно, система должна выдать одинаковые имена в обоих случаях: your-web-server

Советую проверить отправку письма таким образом

# telnet localhost smtp

нам выдает:
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost6.localdomain6 ESMTP Sendmail 
8.14.3/8.14.3/Debian-9.2ubuntu1; Thu, 9 Dec 2010 15:31:17 +0200;
(No UCE/UBE) logging access from: localhost.localdomain(OK)-
localhost.localdomain [127.0.0.1]

вводим:
HELO localhost

нам выдает:
250 localhost6.localdomain6 Hello localhost.localdomain [127.0.0.1], 
pleased to meet you

вводим:
MAIL FROM: no-reply@gmail.com

нам выдает:
250 2.1.0 no-reply@gmail.com... Sender ok

вводим:
RCPT TO: my_exist@gmail.com

нам выдает:
250 2.1.5 my_exist@gmail.com... Recipient ok

вводим:
DATA

нам выдает:
354 Enter mail, end with "." on a line by itself

вводим
test message
.

я надеюсь что вы догадались что указанную почту выше  нужно было заменить на свою

последнее что пишет нам телнет
250 2.0.0 oB9DVHsE004837 Message accepted for delivery

В результате выполнения последовательности комманд на указанный e-mail (my_exist@gmail.com) должно прийти сообщение ("test message").

 

Настройка php.ini

gedit /etc/php5/apache2/php.ini

Находим и редактируем следующую строчку

sendmail_path = /usr/sbin/sendmail -t -i

Проверка функции mail()

<?

 echo  mail ("my_exist@gmail.com","test message",
             "test message","From:no-reply@gmail.com");

?>

Настройка завершена я надеюсь у вас получилось настроить Sendmail на Ubuntu

 

8 Комментария (ев)

  1. Можно прописать несколько ящиков , box1 box2 box3 , но я бы все таки использовал postfix для сбора и отправки почты с сайтов если у вас их много.

    • Сделал как у вас, вот так теперь выглядит файл /etc/hosts:

      127.0.0.1 localhost
      163.***.***.67 box1.****.org trommo
      ::1 localhost ip6-localhost ip6-loopback
      ff02::1 ip6-allnodes
      ff02::2 ip6-allrouters

      Здесь 163.***.***.67 — айпишник сервера, ****.org — домен, на котором размещена тестовая форма для отправки данных, trommo — имя сервера.

      В файле /etc/hostname только одна строка — trommo.

      Но почему-то не прошел проверку командами hostname и hostname -f:

      root@trommo:~# hostname
      trommo
      root@trommo:~# hostname -f
      box1.****.org

      Проверил отправку данных через форму — естественно, не получилось.

      Кстати, box1 — это произвольное название или его надо ещё где-то прописывать?

        • Посмотрел утилитой нетстат:

          root@trommo:~# netstat -ntlp | grep LISTEN
          tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3375/sshd
          tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3465/sendmail: MTA:
          tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 3386/mysqld
          tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 3465/sendmail: MTA:
          tcp6 0 0 :::22 :::* LISTEN 3375/sshd
          tcp6 0 0 :::443 :::* LISTEN 1189/apache2
          tcp6 0 0 :::80 :::* LISTEN 1189/apache2

          Получается, что в портах дело?

      • sudo sendmailconfig
        соглашаемся со всем
        nano /etc/mail/sendmail.mc
        находим вот эти строчки
        DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1′)dnl
        DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1′)dnl
        ставим перед ними dnl
        дальше добавим свои домины тут
        nano /etc/mail/local-host-names
        каждый домен в новой строчке напрпимер
        localhost
        unix
        p.neoblogs.net
        yo.neoblogs.net

        скомпилируем фалы конфигурации
        sudo m4 /etc/mail/sendmail.mc> /etc/mail/sendmail.cf
        перезапустим сервис
        systemctl restart sendmail

        • Спасибо!

          Сегодня практически с утра пытался разобраться что к чему — пару раз даже сносил Сенмейл подчистую, ставил Exim4 — ничего не получалось.

          В итоге выяснилось, что по умолчанию у моего виртуального сервера SMTP в панели было отключено. После этого сделал все как в вашей статье — заработало. По крайней мере тестовое письмо только что дошло.

  2. Очень доходчиво написано, сейчас буду пробовать у себя на Убунте 16.04.

    Вопрос такой: если на сервере работают несколько сайтов, каждый на отдельном домене, для разных стран и на разных языках, как тогда быть с этой строкой:

    123.123.123.123 box1.domainname.com your-web-server

    ?

  3. пожалуйста, команды пишите в строчных буквах
    SUDO APT-GET INSTALL SENDMAIL
    sudo apt-get install sendmail

ОСТАВЬТЕ ОТВЕТ

Пожалуйста введите свой комментарий
Пожалуйста, введите свое имя здесь