Пошлите электронные письма из сценария оболочки без локального mailserver

Это - довольно большое количество рабочих станций, престижности за то, что были достаточно храбры, чтобы вынести так много со статическим дюйм/с ;)

  • Установите один из своих серверов Windows 2003 как сервер DHCP.
  • Это была бы хорошая идея начать думать о Виртуальной LAN, особенно так как это кажется, что у Вас есть инфраструктура для него (Управляемые коммутаторы, маршрутизатор/брандмауэр), плюс Вы определенно извлечете выгоду из дополнительной защиты, если у Вас будет беспроводная сеть. Кроме того, Вам, возможно, понадобилась бы эта возможность смочь правильно разделить группы хостов в их собственный широковещательный домен из соображений безопасности.
    • Удостоверьтесь, что Вы создаете другой VLAN для своей беспроводной сети, и для безопасности и оставлять комнату для будущего расширения (Не знайте, сколько клиентов обычно соединяется с Вашими точками доступа, но если необходимо расшириться позже и иметь более широкую возможность, Вы не должны будете перенумеровывать - иногда это - давка, в зависимости от Вашей конфигурации).
  • Я предлагаю использовать менее общее 10.x.x.x, сеть как 192.168.x.x является наиболее часто используемой потребительскими товарами (переключатели/беспроводная связь). Это сохранит Вас головная боль, когда один из Ваших сотрудников с ноутбуками настроит сервер DHCP на них с их 192,168 сетями.

0
задан 17 May 2010 в 11:48
4 ответа

Вы могли установить постфикс или что-то еще в режиме только для реле и затем использовать или почту (x) или дурака для отправки почты. Оба могут отправить почту от командной строки.

Хорошим вариантом на Ubuntu мог бы быть nullmailer как MTA, поскольку это разработано для операции только для реле.

2
ответ дан 4 December 2019 в 12:09
  • 1
    ssmtp является другой опцией, которая, насколько я могу сказать, делает в значительной степени то же самое как nullmailer. I' d рекомендуют что-то в той вене. –  David Z 17 May 2010 в 12:24

Если это - человечность затем, Вы имеете Python и можете использовать, это - smtplib модуль (не означает MTA на том же хосте). Существует немного образца, отправленного ниже для получения Вас, запустился (Вы могли бы хотеть поместить имя пользователя/передачу/конфигурацию в ini файл, сделать некоторую проверку ошибок и такой, но ''starttls'' строка шифрует остальную часть smtp сессии, если сервер поддерживает его.). Это дает Вам простой и безопасный. Возможно прикрепить вложения и так далее с небольшой дополнительной работой.

Вы назвали бы его как: mailsender.py "Это - мое сообщение".

#!/usr/bin/python

import smtplib
import sys

message = sys.argv[1]

server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login('fromuser@gmail.com', 'password')
server.sendmail('fromuser@gmail.com', 'touser@somewhere.com', message)
server.rset()
server.quit()

Можно назвать ''mailsender.py'' от задания крона или сценариев оболочки.

2
ответ дан 4 December 2019 в 12:09

Имелась та же проблема: среда Docker и полнофункциональный MTA уже были в контейнере, поэтому все типичные порты уже используются и, следовательно, не могут запускать MTA как обычно на хосте Docker, куда я хочу отправлять почту каждый раз, когда завершается резервное копирование.

Благодаря @davey я мог расширить его скрипт на Python для отправки действительных писем:

#!/usr/bin/python

# script to send mail via smarthost
# (do NOT name this script "smtplib.py")

# edit settings
debuglevel   = 0
server_host  = 'localhost'
server_port  = 587
server_user  = 'me@myhost.com'
server_pass  = 'MyVerySecretP455W0RD'
address_from = 'me@myhost.com'
address_to   = 'myothermailbox@otherhost.com'
mail_subject = 'backup completed'

# load requirements
import datetime
import smtplib
import sys
# check if message was given, else show usage
try:
    sys.argv[1]
except IndexError:
    print 'No message given! Usage: ' + sys.argv[0] + ' "my test message"'
    quit(1)
else:
    msg_content = sys.argv[1]
# format mailheader
msg_content = sys.argv[1]
msg_from = "From: " + address_from + "\r\n"
msg_to = "To: " + address_to + "\r\n"
msg_subject = "Subject: " + mail_subject + "\r\n"
msg_timestamp = '{:%a, %d %b %Y %H %M:%S %z}'.format(datetime.datetime.now())
msg_date = "Date: " + msg_timestamp + "\r\n"
msg = msg_from + msg_to + msg_subject + msg_date + "\r\n" + msg_content
# connect to smarthost, login, send mail and disconnect
server = smtplib.SMTP(server_host, server_port)
server.ehlo()
server.starttls()
#server.ehlo()
server.login(server_user, server_pass)
server.set_debuglevel(debuglevel)
server.sendmail(address_from, address_to, msg)
server.rset()
server.quit()
0
ответ дан 4 December 2019 в 12:09

Вы можете использовать службу электронной почты, которая предоставляет REST API. Я использую mailjet. Они также предлагают совершенно бесплатную учетную запись (без CC). Просто зарегистрируйтесь у них и отправьте сообщение с помощью curl.

0
ответ дан 4 November 2020 в 10:52

Теги

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