Конфигурирование sendmail позади брандмауэра

Создайте класс, который расширяет HttpServlet и добавляет к нему аннотацию @WebServlet , содержащую требуемый URL-адрес сервлета, который должен прослушивать.

@WebServlet("/yourServletURL")
public class YourServlet extends HttpServlet {}

И просто позвольте

указать на этот URL. Я также рекомендую использовать метод POST для неидемпотентных запросов. Вы должны убедиться, что вы указали атрибут name полей ввода формы HTML (,

Submit button.

Создайте метод doPost() в вашем сервлете, который захватывает представленные входные значения в качестве параметров запроса, введенных в поле ввода name (не id!) , Вы можете использовать request.getParameter() для получения переданного значения из полей с одним значением и request.getParameterValues() для получения переданных значений из полей с несколькими значениями.

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String name = request.getParameter("name");
    String pass = request.getParameter("pass");
    String gender = request.getParameter("gender");
    boolean agree = request.getParameter("agree") != null;
    String[] roles = request.getParameterValues("role");
    String countryCode = request.getParameter("countryCode");
    String[] animalIds = request.getParameterValues("animalId");
    String message = request.getParameter("message");
    boolean submitButtonPressed = request.getParameter("submit") != null;
    // ...
}

При необходимости необходимо выполнить проверку и, наконец, сохраняют его в БД обычным способом JDBC / DAO .

User user = new User(name, pass, roles);
userDAO.save(user);

См. также:

7
задан ceejayoz 4 September 2008 в 15:18
поделиться

3 ответа

@eli: изменение sendmail.cf непосредственно обычно не рекомендуется, так как оно сгенерировано макро-компилятором.

Отредактируйте/etc/mail/sendmail.mc для включения строки:

  define(`SMART_HOST',`mailrelay.example.com')dnl 

После изменения sendmail.mc макро-конфигурационного файла это должно быть перекомпилировано для создания sendmail конфигурационного файла.

  # m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

И перезапустите sendmail сервис (Linux):

  # /etc/init.d/sendmail restart

А также устанавливая smarthost, Вы могли бы хотеть также отключить конфигурацию определения имен и возможно сместить Ваш sendmail к нестандартному порту или отключить режим демона.

Отключите определение имен

Серверы, которые являются в сетях со стенами огня или использующий Преобразование сетевых адресов (NAT), не могут иметь в наличии сервисы NIS или DNS. Это создает проблему для sendmail, так как он будет использовать DNS по умолчанию, и если это не будет доступно, то Вы будете видеть сообщения как это в mailq:

  host map: lookup (mydomain.com): deferred)

Если Вы не готовы установить соответствующий DNS или сервис NIS, который sendmail может использовать в этой ситуации, Вы будете обычно настраивать определение имен, которое будет сделано с помощью/etc/hosts файла. Это сделано путем включения 'service.switch' файла и определения разрешения файлом, следующим образом:

1: Позвольте service.switch для Редактирования sendmail/etc/mail/sendmail.mc включать строки:

  define(`confSERVICE_SWITCH_FILE',`/etc/mail/service.switch')dnl

2: Настройте service.switch для файлов, Создают или изменяют/etc/mail/service.switch для обращения только к/etc/hosts для определения имен:

  # cat /etc/mail/service.switch
  hosts files

3: Перекомпилируйте sendmail.mc и перезапустите sendmail для этой установки для вступления в силу.

Сместите sendmail к нестандартному порту или отключите режим демона

По умолчанию sendmail послушает на порте 25. Можно хотеть изменить этот порт или отключить sendmail режим демона в целом по различным причинам: - если существует политика безопасности, запрещающая использование закрепленных портов - если другой продукт/процесс SMTP должен работать на том же хосте на стандартном порте - если Вы не хотите принимать почту через smtp вообще, просто отправьте его с помощью sendmail

1: Смещать sendmail для использования нестандартного порта. Отредактируйте/etc/mail/sendmail.mc и измените установку "Port" в строке:

  DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

Например, чтобы заставить sendmail использовать порт 125:

  DAEMON_OPTIONS(`Port=125,Addr=127.0.0.1, Name=MTA')

Это потребует, чтобы sendmail.mc был перекомпилирован и sendmail, который будет перезапущен.

2: С другой стороны, отключить sendmail режим демона в целом (Linux) Редактирование/etc/sysconfig/sendmail и изменить установку "DAEMON" к:

  DAEMON=no

Это изменение потребует, чтобы sendmail был перезапущен.

13
ответ дан 6 December 2019 в 08:46
поделиться

http://www.elandsys.com/resources/sendmail/smarthost.html

Sendmail Smarthost

smarthost является хостом, через который передается исходящая почта. Некоторый блок ISPs, исходящий трафик SMTP (порт 25) и, требует, чтобы их пользователи отослали всю почту через почтовый сервер ISP. Sendmail может быть настроен для использования почтового сервера ISP в качестве умного хоста.

Прочитайте связанную статью для инструкции для того, как настроить это.

5
ответ дан 6 December 2019 в 08:46
поделиться

@Espo: Спасибо за большой совет относительно того, где запустить. Ваша ссылка была бы лучше, если бы я настраивал sendmail для его первого использования вместо того, чтобы брать существующую конфигурацию и сделать это небольшое изменение. Однако, после того как я знал для поиска материала на "SmartHost", я нашел более легкий путь.

Все, что я должен был сделать, было отредактировать мой/etc/mail/sendmail.cf файл для изменения

DS

кому:

DSmailrelay.example.com

затем перезапустите sendmail, и он работал.

3
ответ дан 6 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: