LINUX.ORG.RU
ФорумAdmin

POSTFIX отправка почты через php скрипт

 


0

1

Здравствуйте!

Имеется сервер с вебстраничкой на apache2, установлен postfixmysql, postfixadmin, php8.4 и установленный и рабочий модуль php для apache2.

С странички postfixadmin сообщения корректно отправляются на *@bk.ru

На сайте есть кнопка обратной связи по нажатию - переход на страничку формы обратной связи. После корректного заполнения формы можно нажать на кнопку «отправить» - после чего отрабатывает скрипт


<?php
$sendto   = "techno-trust@bk.ru";
$usermail = $_POST['email'];
$username = $_POST['name'];
$userphone = $_POST['phone'];
$content  = nl2br($_POST['msg']);
$subject  = "Новое сообщение";
$headers  = "From: " . strip_tags($usermail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($usermail) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$msg  = "<html><body style='font-family:Arial,sans-serif;'>";
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>Новое сообщение</h2>\r\n";
$msg .= "<p><strong>Имя:</strong> ".$username."</p>\r\n";
$msg .= "<p><strong>Номер телефона:</strong> ".$userphone."</p>\r\n";
$msg .= "<p><strong>Почта:</strong> ".$usermail."</p>\r\n";
$msg .= "<p><strong>Сообщение:</strong> ".$content."</p>\r\n";
$msg .= "</body></html>";

if(@mail($sendto, $subject, $msg, $headers)) {
	echo "true";
} else {
	echo "false";
}

?>

На страничке формы - появляется сообщение о том что отправка произошла успешно, но письмо не приходит…. Вот код станички обратной связи.


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="feedscr/style.css">
<title>Форма обратной связи</title>
 <link rel="shortcut icon" href="/img/logo2.png" type="image/png">
 <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
 <script type="text/javascript" src="js/jquery.maskedinput.js"></script>
 <script type="text/javascript">
jQuery(function($){
   $("#phone").mask("+7 (999) 999-9999");
   $("#phone2").mask("+7 (999) 999-9999");
});
</script>
</head>
<body>

<!-- begin content  -->
<div class="content clearfix">
  <!-- begin post  -->
  <div class="post">


<div id="inline">
  <h2>Онлайн заявка</h2>
  <form id="contact" name="contact" action="#" method="post">
    <input type="name" id="name" name="name" class="txt" placeholder="Ваше имя">
    <input type="phone" id="phone" name="phone" class="txt" placeholder="Ваш телефон">
    <input type="email" id="email" name="email" class="txt" placeholder="Ваш e-mail"> 
    <textarea id="msg" name="msg" class="txtarea"  placeholder="Ваше сообщение:"></textarea>
    <button id="send">Отправить</button>
  </form>
</div>




</div>
<!-- end post -->
	<!-- end content -->


<script type="text/javascript">
  function validateEmail(email) { 
    var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return reg.test(email);
  }

  $(document).ready(function() {
    $("#contact").submit(function() { return false; });
    $("#send").on("click", function(){
      var emailval  = $("#email").val();
      var namevl  = $("#name").val();
      var phonevl  = $("#phone").val();
      var msgval    = $("#msg").val();
      var msglen    = msgval.length;
      var mailvalid = validateEmail(emailval);

      if(mailvalid == false) {
        $("#email").addClass("error");
      }
      else if(mailvalid == true){
        $("#email").removeClass("error");
      }
  if(mailvalid == false) {
        $("#name").addClass("error");
      }
      else if(mailvalid == true){
        $("#name").removeClass("error");
      }
      if(mailvalid == false) {
        $("#phone").addClass("error");
      }
      else if(mailvalid == true){
        $("#phone").removeClass("error");
      }
      if(msglen < 4) {
        $("#msg").addClass("error");
      }
      else if(msglen >= 4){
        $("#msg").removeClass("error");
      }
      
      if(mailvalid == true && msglen >= 4) {
        // если обе проверки пройдены
        // сначала мы скрываем кнопку отправки
        $("#send").replaceWith("<em>отправка...</em>");
        $.ajax({
          type: 'POST',
          url: 'feedscr/sendmessage.php',
          data: $("#contact").serialize(),
          success: function(data) {
            if(data == "true") {
              $("#contact").fadeOut("fast", function(){
                $(this).before("<p><strong>Успешно! Ваше сообщение отправлено  :)</strong></p>");
                setTimeout("$.fancybox.close()", 1000);
              });
            }
          }
        });
      }
    });
  });
</script>

</body>
</html>



Прошу помощи!



Последнее исправление: kalipsy (всего исправлений: 2)
Ответ на: комментарий от kalipsy

Отправителем значится www-data@techno-trust.ru и в теле письма

А ко мне не дойдёт:

250 techno-trust.ru
mail from:<>
250 2.1.0 Ok
rcpt to:<www-data@techno-trust.ru>
550 5.1.1 <www-data@techno-trust.ru>: Recipient address rejected: User unknown in virtual mailbox table

Ибо https://en.wikipedia.org/wiki/Callback_verification , а мне нафиг не упал мусор с несуществующим mail from, если только это не mail from:<>.

Проблема действительно в DKIM подписи.

И да, для меня это именно проблема: вижу DKIM, включаю режим максимальных проверок на спам. :-)

Кстати, а где SPF?

$ host -t txt techno-trust.ru
techno-trust.ru has no TXT record

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

И да, для меня это именно проблема: вижу DKIM, включаю режим максимальных проверок на спам. :-)

Хм. Интересный подход. А какова причина агриться на наличие DKIM?

Кстати, а где SPF?

Очень правильное замечание!
2ТС Вот он таки обязателен к исполнению. Вообще на будущее советую прислушиваться к советам AS он здесь гуру в части почтарей. Точнее гуру не только в них, но именно их знает как немногие из местных обитателей.

anc ★★★★★
()
Ответ на: комментарий от anc

У всех начиная с google … mail … ya у всего крупняка стоят ~all.

Как только я у себя заменил его на - то сразу весь коммерческий департамент написал кляузу что им важные письма перестали приходить….

Да фиг с ним с spf у многих крупных организаций у нас, имеющих свои почтовые сервера даже обычные днс A записи не настроены :(

И указывать другим админам на это бесполезно :(

mx__ ★★★★★
()
Ответ на: комментарий от anc

И да, для меня это именно проблема: вижу DKIM, включаю режим максимальных проверок на спам. :-)

Хм. Интересный подход. А какова причина агриться на наличие DKIM?

Да что-то статистика... :-)

AS ★★★★★
()
Ответ на: комментарий от AS

Так я про это и пишу. Ты делаешь все правильно а та сторона при посылке тебе плюет на все, и никто даже слушать нечего не хочет почему их письмо до тебя не доходит.

Поэтому все тупо ставят ~.

Своих то можно заставить даже по струнке ходить.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

У всех начиная с google … mail … ya у всего крупняка стоят ~all.

Да знаю.

Как только я у себя заменил его на - то сразу весь коммерческий департамент написал кляузу что им важные письма перестали приходить….

Тоже игрался в это, сначала при первичной настройке, быстро нашлись «не приходящие», хотя конторка мелкая на тот момент была и кол-во присылающих (по доменам) было вполне себе ограничено. Потом лет через 10 при переносе почтаря решил повторить эксперимент в надежде, что может в мире что-то поменялось, оказалось, что не сильно поменялось.

Да фиг с ним с spf у многих крупных организаций у нас, имеющих свои почтовые сервера даже обычные днс A записи не настроены :(

Не распарсил. Вы про какие именно A записи? Поясните плиз.

ЗЫ Удивительное совпадение, у меня ваш ник пожизни ассоциируется с MX записью и вот перетираем как раз за это :)

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от anc

Ну да обратка. Это я просто не подумал что точнее нужно написать :(

Причем как я понимаю с мх записью у них все в порядке письма до них доходят.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

А! Ну это же не A запись. Вот проблемы отсутствия/некорректности PTR это исключительно проблемы индейцев, за это дело «бьют по наглой рыжей морде» много где, всмысле шлют лесом и абсолютно правильно делают, если ты не можешь решить этот вопрос, то с вероятностью стремящейся к 100% писем мне от тебя ненужно.

anc ★★★★★
()
Ответ на: комментарий от anc

Это реаль, и это касается крупных промышленных корпораций …

Ну с этим доказательством обычно считаються, а вот про спф запись никто слушать даже не хочет. У них видите ли даже яндекс почту принимает.

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Это реаль, и это касается крупных промышленных корпораций …

С этим согласен. Чем крупнее компания, тем больше шансов встретить на вроде бы критичных участках нердов от сохи. Зато их много! Т.е. на абсолютно таком же участке в небольшой компании один-два человека всё настроят по фэншую и будут оперативно реагировать на всякие изменения, а в крупной десяток раздолбаев могут месяцами обсуждать какую бы ещё попробовать галочку тыкнуть в гуи интерфейсе для того, что бы оно заработало. Ну или перефразируя одну песенку «ты им факты, они тебе доводы». Я такое больше одного раза наблюдал ИРЛ и вынужден наблюдать и сейчас.
Возможно не раз упоминал здесь пример таких нердов поломавших работающее! После служебки с описанием того, что они поломали звонок «а ты не подскажешь, какую галочку и где надо поставить в нашей гуйне, что бы сделать то, что тебе нужно?» Т.е. люди даже не понимают о чем речь! хотя в служебке была полная техническая выкладка, им блин надо подсказать где в их! гуйне! найти нужную «галочку». И вот таких допускают рулить корпоративными почтарями. Да что там рулить, они сами их устанавливают заменяя рабочие ранее системы только по причине «без мышки мы не умеем». И отмазка от них на скандальных совещаниях «У нас ВСЕ! специалисты ушли, у нас некому этим заниматься» Расшифровываю: ушло два человека, и помимо освободившихся вакансий им накинули ещё 5 и вот люди за полгода... год...три года... пять лет...(без преувеличения) не могут себе хоть одного но спеца взять, зато набрали стопочку нердов от сохи. Т.е. как у них начались всякие факапы после «замены» так у них и продолжаются из года в год с рандомным результатом. ЕМНИП только по прошествии пяти-семи лет, существенно сократили канцелярит и хоть стали обходится звонками на тему поиска галочки.

anc ★★★★★
()
Ответ на: комментарий от mx__

Ну и ещё вспомнилось. Звоню представителю заказчика «Коля, я чейто не понимаю, у вас там что, крупная авария? БОльшая часть обьектов отвалилась, а остальные как-то рандомно то есть то нет» он ржет «Ага, крупная авария... :))) эти пиип там опять что-то с центральным роутером мутят, у нас тут цирк, с утра н-обьектов доступны, после обеда недоступны... я уже служебку написал, ответили что за две недели управятся» Вот так вот люди работают, все делают исключительно по живому, методом научного тыка без всяких подготовок, а потом когда не получилось выясняют проблемы по остаточному принципу «пожаловались, значит чего-то не доделали». И ЧСХ вот это «не доделали» у них тоже «методом научного тыка» решается. Без шуток. Вроде то, что нужно тебе починили... прошло два дня... опять не робит, звонишь им и слышишь «Мы твое не трогали, но сейчас посмотрим... Упс, звиняй, случайно и твое задели, не подумали что оно связано» или бывало и просто «Упс, звиняй, случайно и твое задели». Вот понимаете, на это «случайно» у тебя рождается только «мать-мать-мать... привычно отозвалось эхо...»
/dev/urandom имхо более предсказуем чем поведение таких ЯЖ ЫТЕШНИКОВ. И вот вроде нормальные люди, реально нормальные, но такую дичь регулярно творят...

anc ★★★★★
()
Ответ на: комментарий от mx__

И вот ещё вспомнилось из неправильного «стратегического планирования». Есть парень, витуху тянет как бог! Всякие мелкие, и не только мелкие, проблемы так же решает! Но вот ставят его началиника и понеслось... стратегическое планирование как отсутствовало когда он был начинающими мышевозом, так и не появилось :( Все принятия решений как были в зачаточном состоянии «мы сегодня набухались в честь „подставить по вкусу“ и решили нести светлое и доброе всем серверам и другой активки» так никуда и не исчезли по прошествии овер 15 лет. Начет «набухались» это не метафизическое, а вполне реальное. Нажруться дружную толпою и давай нести доброе светлое... А на утро... вашу мать... вы что черти вчера натворили? Т.е. люди реально находясь под вполне неилюзорным допингом могут пойти заниматься миграцией серверов, оптимизировать роутинг и т.д. и .т.п. А так как они нихрена не помнят, что же они натворили вчера, то восстановление хотя бы к предыдущему состоянию у них может занимать и пару недель, действуют уже затыканием дырок пальцем в небо.

anc ★★★★★
()
Ответ на: комментарий от mx__

Или вот ещё пример от этих кловунов. Кладут мониторинг SCADA с плановом порядке (тут без бухла), все нормально, все предупреждены... И по итогам, даже не почесались зайти в диспетчерские на тему «а оно вообще работает?» Ну чё, диспетчера не кипишуют... все же в плановом порядке... но все-таки где-то к часу ночи диспетчера звонят их начальника с вопросом «А ещё долго? А то нам скоро наполнятся надо будет» Этим кловунам даже в голову не пришло, что стратегические объекты надо в обязательном порядке проверять после любого, даже самого мелкого изменения.
От такие реалии «крупных промышленных корпораций» и отдельно взятых вроде и хороших внешне людей, но при этом нердов от сохи.

anc ★★★★★
()