diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cd62658 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM golang:1.12.4-alpine3.9 AS builder + +RUN apk add --update --no-cache make bash git openssh-client build-base musl-dev curl wget + +ADD . /src/app + +WORKDIR /src/app + +RUN mkdir ./bin && \ + go build -o ./bin/postmanq -a cmd/postmanq.go && \ + go build -o ./bin/pmq-grep -a cmd/pmq-grep.go && \ + go build -o ./bin/pmq-publish -a cmd/pmq-publish.go && \ + go build -o ./bin/pmq-report -a cmd/pmq-report.go + +FROM alpine:3.9 + +COPY --from=builder /usr/local/go/lib/time/zoneinfo.zip /usr/local/go/lib/time/zoneinfo.zip +COPY --from=builder /src/app/bin/postmanq /bin/postmanq +COPY --from=builder /src/app/bin/pmq-grep /bin/pmq-grep +COPY --from=builder /src/app/bin/pmq-publish /bin/pmq-publish +COPY --from=builder /src/app/bin/pmq-report /bin/pmq-report + + +ENTRYPOINT ["postmanq"] +CMD ["-f", "/etc/postmaq.yaml"] \ No newline at end of file diff --git a/README.md b/README.md index 9e6df7d..9bb420e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -#PostmanQ +# PostmanQ PostmanQ - это высокопроизводительный почтовый сервер(MTA). На сервере под управлением Ubuntu 12.04 с 8-ми ядерным процессором и 32ГБ оперативной памяти @@ -8,7 +8,7 @@ PostmanQ рассылает более 300 писем в секунду. PostmanQ разбирает одну или несколько очередей одного или нескольких AMQP-серверов с письмами и отправляет письма по SMTP сторонним почтовым сервисам. -##Возможности +## Возможности 1. PostmanQ может работать с несколькими AMQP-серверами и очередями каждого из серверов. 2. PostmanQ умеет работать через TLS соединение. @@ -19,7 +19,7 @@ PostmanQ разбирает одну или несколько очередей 7. PostmanQ попробует отослать письмо попозже, если возникла сетевая ошибка, письмо попало в [серый список](http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA) или количество отправленных писем почтовому сервису уже максимально. 8. PostmanQ положит в отдельную очередь письма, которые не удалось отправить из-за 5ХХ ошибки -##Как это работает? +## Как это работает? 1. Нам потребуется AMQP-сервер, например [RabbitMQ](https://www.rabbitmq.com), и [go](http://golang.org/) для компиляции PostmanQ. 2. Выполняем предварительную подготовку и установку PostmanQ. Инструкции описаны ниже. @@ -41,7 +41,7 @@ PostmanQ разбирает одну или несколько очередей 11. Если произошла сетевая ошибка, то письмо перекладывается в одну из очередей для повторной отправки. 12. Если произошла 5ХХ ошибка, то письмо перекладывается в очередь с проблемными письмами, повторная отправка не производится. -##Предварительная подготовка +## Предварительная подготовка Чтобы наши письма отправлялись безопасно и доходили до адресатов, не попадая в спам, нам необходимо создать сертификат, публичный и закрытый ключ для каждого домена. @@ -95,15 +95,15 @@ Selector-ом может быть любым словом на латинице. Теперь наши письма не будут попадать в спам, и все готово для установки PostmanQ. -##Установка +## Установка Сначала уcтанавливаем [go](http://golang.org/doc/install). Затем устанавливаем PostmanQ: cd /some/path && mkdir postmanq && cd postmanq/ export GOPATH=/some/path/postmanq/ export GOBIN=/some/path/postmanq/bin/ - go get -d github.com/actionpay/postmanq/cmd - cd src/github.com/actionpay/postmanq + go get -d github.com/Halfi/postmanq/cmd + cd src/github.com/Halfi/postmanq git checkout v.3.1 go install cmd/postmanq.go go install cmd/pmq-grep.go @@ -116,27 +116,39 @@ Selector-ом может быть любым словом на латинице. Затем берем из репозитория config.yaml и пишем свой файл с настройками. Все настройки подробно описаны в самом config.yaml. -##Использование +## Использование sudo rabbitmq-server -detached postmanq -f /path/to/config.yaml -##Утилиты +## Утилиты Для PostmanQ создано несколько утилит, призванных облегчить работу с логами и очередями рассылок - pmq-grep, pmq-publish, pmq-report. Вызов каждой из утилит без аргументов покажет ее использование. -###pmq-grep +### pmq-grep Если PostmanQ пишет логи в файл, то с помощью pmq-grep можно вытащить из лога все записи по определенному email получателя. -###pmq-publish +### pmq-publish Если вы что то не прописали в DNS, или операционная система не может открыть столько соединений, сколько необходимо для PostmanQ, то велика вероятность, что письма не будут отправляться, и PostmanQ будет складывать письма в очередь для ошибок или в одну из очередей для повторной отправки. После устранения проблемы, возможно, понадобится срочно разослать неотправленные письма. Как раз для этого и существует pmq-publish. С помощью pmq-publish можно переложить письма, например, из очереди для ошибок в очередь для отправки, отфильтровав письма по коду ошибки, полученной от почтового сервиса. -###pmq-report +### pmq-report -С помощью pmq-report можно посмотреть - по какой причине письмо попало в очередь для ошибок. \ No newline at end of file +С помощью pmq-report можно посмотреть - по какой причине письмо попало в очередь для ошибок. + +## Docker Качаем конфиг: +```bash +curl -o /path/to/config.yaml https://raw.githubusercontent.com/Halfi/postmanq/v.3.2-rc/config.yaml +``` +Настраиваем доступы к AMQP-серверу. + +И запускаем, прокинув конфиг: + +```bash +docker run -v `/path/to/config.yaml`:`/etc/postmaq.yaml` -d --restart unless-stopped --name postmanq halfi/postmanq:latest +``` \ No newline at end of file diff --git a/analyser/detail.go b/analyser/detail.go index cbb0334..801ac13 100644 --- a/analyser/detail.go +++ b/analyser/detail.go @@ -2,7 +2,7 @@ package analyser import ( "fmt" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" "regexp" "strings" ) diff --git a/analyser/service.go b/analyser/service.go index 05d80a7..5c66bf5 100644 --- a/analyser/service.go +++ b/analyser/service.go @@ -4,7 +4,7 @@ import ( "bufio" "flag" "fmt" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" "os" "strconv" "strings" diff --git a/application/abstract.go b/application/abstract.go index 4a69da0..4467536 100644 --- a/application/abstract.go +++ b/application/abstract.go @@ -1,8 +1,8 @@ package application import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "io/ioutil" "time" ) diff --git a/application/grep.go b/application/grep.go index 7180978..b2571a4 100644 --- a/application/grep.go +++ b/application/grep.go @@ -1,8 +1,8 @@ package application import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/grep" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/grep" ) // приложение, ищущее логи по адресату или получателю diff --git a/application/post.go b/application/post.go index bacc26b..6f3ac5f 100644 --- a/application/post.go +++ b/application/post.go @@ -1,14 +1,14 @@ package application import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/connector" - "github.com/actionpay/postmanq/consumer" - "github.com/actionpay/postmanq/guardian" - "github.com/actionpay/postmanq/limiter" - "github.com/actionpay/postmanq/logger" - "github.com/actionpay/postmanq/mailer" - "github.com/actionpay/postmanq/recipient" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/connector" + "github.com/Halfi/postmanq/consumer" + "github.com/Halfi/postmanq/guardian" + "github.com/Halfi/postmanq/limiter" + "github.com/Halfi/postmanq/logger" + "github.com/Halfi/postmanq/mailer" + "github.com/Halfi/postmanq/recipient" yaml "gopkg.in/yaml.v2" "runtime" ) diff --git a/application/publish.go b/application/publish.go index dc9a94b..b972a2c 100644 --- a/application/publish.go +++ b/application/publish.go @@ -1,8 +1,8 @@ package application import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/consumer" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/consumer" ) // приложение, перекладывающее письма из очереди в очередь diff --git a/application/report.go b/application/report.go index 9d315db..d1206db 100644 --- a/application/report.go +++ b/application/report.go @@ -1,9 +1,9 @@ package application import ( - "github.com/actionpay/postmanq/analyser" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/consumer" + "github.com/Halfi/postmanq/analyser" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/consumer" ) // приложение, анализирующее неотправленные сообщения diff --git a/cmd/pmq-grep.go b/cmd/pmq-grep.go index 1cf4d4b..017c37b 100644 --- a/cmd/pmq-grep.go +++ b/cmd/pmq-grep.go @@ -3,8 +3,8 @@ package main import ( "flag" "fmt" - "github.com/actionpay/postmanq/application" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/application" + "github.com/Halfi/postmanq/common" ) func main() { diff --git a/cmd/pmq-publish.go b/cmd/pmq-publish.go index 3800c32..aace6e6 100644 --- a/cmd/pmq-publish.go +++ b/cmd/pmq-publish.go @@ -3,8 +3,8 @@ package main import ( "flag" "fmt" - "github.com/actionpay/postmanq/application" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/application" + "github.com/Halfi/postmanq/common" ) func main() { diff --git a/cmd/pmq-report.go b/cmd/pmq-report.go index 8a7b15d..da3a8bc 100644 --- a/cmd/pmq-report.go +++ b/cmd/pmq-report.go @@ -3,8 +3,8 @@ package main import ( "flag" "fmt" - "github.com/actionpay/postmanq/application" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/application" + "github.com/Halfi/postmanq/common" ) func main() { diff --git a/cmd/postmanq.go b/cmd/postmanq.go index 228f3ec..1bdb306 100644 --- a/cmd/postmanq.go +++ b/cmd/postmanq.go @@ -3,8 +3,8 @@ package main import ( "flag" "fmt" - "github.com/actionpay/postmanq/application" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/application" + "github.com/Halfi/postmanq/common" ) func main() { diff --git a/connector/connector.go b/connector/connector.go index 9a3b915..06fbd62 100644 --- a/connector/connector.go +++ b/connector/connector.go @@ -3,8 +3,8 @@ package connector import ( "errors" "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "net" "net/smtp" "time" diff --git a/connector/preparer.go b/connector/preparer.go index 9b6750c..9f67cf9 100644 --- a/connector/preparer.go +++ b/connector/preparer.go @@ -3,8 +3,8 @@ package connector import ( "errors" "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "time" ) diff --git a/connector/seeker.go b/connector/seeker.go index 4dda960..90eca96 100644 --- a/connector/seeker.go +++ b/connector/seeker.go @@ -1,7 +1,7 @@ package connector import ( - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/logger" "net" "strings" "sync" diff --git a/connector/server.go b/connector/server.go index acf24fc..051252c 100644 --- a/connector/server.go +++ b/connector/server.go @@ -1,7 +1,7 @@ package connector import ( - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" "net" ) diff --git a/connector/service.go b/connector/service.go index 7acee96..5821c7c 100644 --- a/connector/service.go +++ b/connector/service.go @@ -4,8 +4,8 @@ import ( "crypto/tls" "crypto/x509" "encoding/pem" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" yaml "gopkg.in/yaml.v2" "io/ioutil" "net" diff --git a/consumer/assistant.go b/consumer/assistant.go index 942c60d..5c3100f 100644 --- a/consumer/assistant.go +++ b/consumer/assistant.go @@ -2,8 +2,8 @@ package consumer import ( "encoding/json" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "github.com/streadway/amqp" ) @@ -51,15 +51,15 @@ func (a *Assistant) publish(id int, channel *amqp.Channel, deliveries <-chan amq logger. By(message.HostnameFrom). Info( - "assistant#%d-%d, handler#%d requeue mail#%d: envelope - %s, recipient - %s to %s", - a.id, - message.Id, - id, - message.Id, - message.Envelope, - message.Recipient, - message.HostnameFrom, - ) + "assistant#%d-%d, handler#%d requeue mail#%d: envelope - %s, recipient - %s to %s", + a.id, + message.Id, + id, + message.Id, + message.Envelope, + message.Recipient, + message.HostnameFrom, + ) if binding, ok := a.destBindings[message.HostnameFrom]; ok { err = channel.Publish( binding.Exchange, @@ -76,35 +76,35 @@ func (a *Assistant) publish(id int, channel *amqp.Channel, deliveries <-chan amq logger. By(message.HostnameFrom). Info( - "assistant#%d-%d publish mail#%d to exchange %s", - a.id, - message.Id, - message.Id, - binding.Exchange, - ) + "assistant#%d-%d publish mail#%d to exchange %s", + a.id, + message.Id, + message.Id, + binding.Exchange, + ) delivery.Ack(true) return } else { logger. By(message.HostnameFrom). Warn( - "assistant#%d-%d can't publish mail#%d, error - %v", - a.id, - message.Id, - message.Id, - err, - ) + "assistant#%d-%d can't publish mail#%d, error - %v", + a.id, + message.Id, + message.Id, + err, + ) } } else { logger. By(message.HostnameFrom). Warn( - "assistant#%d-%d can't publish mail#%d, not found exchange for %s", - a.id, - message.Id, - message.Id, - message.HostnameFrom, - ) + "assistant#%d-%d can't publish mail#%d, not found exchange for %s", + a.id, + message.Id, + message.Id, + message.HostnameFrom, + ) } } else { logger.All().Warn("assistant#%d can't unmarshal delivery body, body should be json, %v given, error - %v", a.id, delivery.Body, err) diff --git a/consumer/binding.go b/consumer/binding.go index 816b3f9..2daa4e5 100644 --- a/consumer/binding.go +++ b/consumer/binding.go @@ -2,8 +2,8 @@ package consumer import ( "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "github.com/streadway/amqp" "time" ) diff --git a/consumer/consumer.go b/consumer/consumer.go index 4d9a617..58246d9 100644 --- a/consumer/consumer.go +++ b/consumer/consumer.go @@ -3,8 +3,8 @@ package consumer import ( "encoding/json" "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "github.com/streadway/amqp" "regexp" "sync" @@ -77,14 +77,14 @@ func (c *Consumer) consumeDeliveries(id int, channel *amqp.Channel, deliveries < logger. By(message.HostnameFrom). Info( - "consumer#%d-%d, handler#%d send mail#%d: envelope - %s, recipient - %s to mailer", - c.id, - message.Id, - id, - message.Id, - message.Envelope, - message.Recipient, - ) + "consumer#%d-%d, handler#%d send mail#%d: envelope - %s, recipient - %s to mailer", + c.id, + message.Id, + id, + message.Id, + message.Envelope, + message.Recipient, + ) event := common.NewSendEvent(message) logger.By(message.HostnameFrom).Debug("consumer#%d-%d send event", c.id, message.Id) @@ -153,25 +153,25 @@ func (c *Consumer) handleErrorSend(channel *amqp.Channel, message *common.MailMe logger. By(message.HostnameFrom). Debug( - "consumer#%d-%d publish failure mail to queue %s, message: %s, code: %d", - c.id, - message.Id, - failureBinding.Queue, - message.Error.Message, - message.Error.Code, - ) + "consumer#%d-%d publish failure mail to queue %s, message: %s, code: %d", + c.id, + message.Id, + failureBinding.Queue, + message.Error.Message, + message.Error.Code, + ) } else { logger. By(message.HostnameFrom). Debug( - "consumer#%d-%d can't publish failure mail to queue %s, message: %s, code: %d, publish error% %v", - c.id, - message.Id, - failureBinding.Queue, - message.Error.Message, - message.Error.Code, - err, - ) + "consumer#%d-%d can't publish failure mail to queue %s, message: %s, code: %d, publish error% %v", + c.id, + message.Id, + failureBinding.Queue, + message.Error.Message, + message.Error.Code, + err, + ) logger.By(message.HostnameFrom).WarnWithErr(err) } } else { @@ -184,30 +184,30 @@ func (c *Consumer) handleDelaySend(channel *amqp.Channel, message *common.MailMe logger. By(message.HostnameFrom). Debug( - "consumer%d-%d find dlx queue", - c.id, - message.Id, - ) + "consumer%d-%d find dlx queue", + c.id, + message.Id, + ) bindingType := common.UnknownDelayedBinding if message.Error != nil { logger. By(message.HostnameFrom). Debug( - "consumer%d-%d detect error, message: %s, code: %d", - c.id, - message.Id, - message.Error.Message, - message.Error.Code, - ) + "consumer%d-%d detect error, message: %s, code: %d", + c.id, + message.Id, + message.Error.Message, + message.Error.Code, + ) } logger. By(message.HostnameFrom). Debug( - "consumer%d-%d detect old dlx queue type#%v", - c.id, - message.Id, - message.BindingType, - ) + "consumer%d-%d detect old dlx queue type#%v", + c.id, + message.Id, + message.BindingType, + ) // если нам просто не удалось отправить письмо, берем следующую очередь из цепочки if chainBinding, ok := bindingsChain[message.BindingType]; ok { bindingType = chainBinding diff --git a/consumer/service.go b/consumer/service.go index 59e208e..54eac65 100644 --- a/consumer/service.go +++ b/consumer/service.go @@ -2,8 +2,8 @@ package consumer import ( "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "github.com/streadway/amqp" yaml "gopkg.in/yaml.v2" "net/url" diff --git a/consumer/sign.go b/consumer/sign.go index 0904fef..bf06d7d 100644 --- a/consumer/sign.go +++ b/consumer/sign.go @@ -1,7 +1,7 @@ package consumer import ( - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" "strings" ) diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e5dea0a --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module github.com/Halfi/postmanq + +go 1.12 + +require ( + github.com/byorty/clitable v0.0.0-20150722055417-9f60651b8308 + github.com/byorty/dkim v0.0.0-20150719182401-d5e4f9348553 + github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94 + gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..ca4875e --- /dev/null +++ b/go.sum @@ -0,0 +1,11 @@ +github.com/byorty/clitable v0.0.0-20150722055417-9f60651b8308 h1:iZ5HdQxRoAfipxT5NBd2Mlth8Ff6MBQpoy5SFGezmlw= +github.com/byorty/clitable v0.0.0-20150722055417-9f60651b8308/go.mod h1:Ue//Mvr04vpK/Y/Wtu0BCdpNcq/QTJN4YqyYrORgSyk= +github.com/byorty/dkim v0.0.0-20150719182401-d5e4f9348553 h1:Ko3nY7Vl/sgMqV+XK/jH8N7flFuPMTk8TW3wouED0bM= +github.com/byorty/dkim v0.0.0-20150719182401-d5e4f9348553/go.mod h1:G3LMb8Cv0CiG7ctLLhK97l05DdoQI/fX3emXpwXa9TE= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94 h1:0ngsPmuP6XIjiFRNFYlvKwSr5zff2v+uPHaffZ6/M4k= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/grep/service.go b/grep/service.go index 993e617..a9aa8de 100644 --- a/grep/service.go +++ b/grep/service.go @@ -3,7 +3,7 @@ package grep import ( "bufio" "fmt" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" yaml "gopkg.in/yaml.v2" "os" "regexp" diff --git a/guardian/guardian.go b/guardian/guardian.go index b24008b..f56a5f4 100644 --- a/guardian/guardian.go +++ b/guardian/guardian.go @@ -1,8 +1,8 @@ package guardian import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" ) // защитник, блокирует отправку на указанные почтовые сервисы diff --git a/guardian/service.go b/guardian/service.go index f0a4435..fed2d24 100644 --- a/guardian/service.go +++ b/guardian/service.go @@ -1,8 +1,8 @@ package guardian import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" yaml "gopkg.in/yaml.v2" ) diff --git a/install.sh b/install.sh index 87ef0dc..d8de8e7 100644 --- a/install.sh +++ b/install.sh @@ -22,8 +22,8 @@ BASE_PATH=`pwd` VERSION="v.3.1" export GOPATH="$BASE_PATH" export GOBIN="$BASE_PATH/bin/" -go get -d github.com/actionpay/postmanq/cmd -cd "$BASE_PATH/src/github.com/actionpay/postmanq" +go get -d github.com/Halfi/postmanq/cmd +cd "$BASE_PATH/src/github.com/Halfi/postmanq" git checkout "$VERSION" go install cmd/postmanq.go go install cmd/pmq-grep.go diff --git a/limiter/limit.go b/limiter/limit.go index 91da01c..61a3b93 100644 --- a/limiter/limit.go +++ b/limiter/limit.go @@ -1,7 +1,7 @@ package limiter import ( - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" "time" ) diff --git a/limiter/limiter.go b/limiter/limiter.go index 089636c..f39c159 100644 --- a/limiter/limiter.go +++ b/limiter/limiter.go @@ -1,8 +1,8 @@ package limiter import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "sync/atomic" ) diff --git a/limiter/service.go b/limiter/service.go index 6663c7f..b79b31a 100644 --- a/limiter/service.go +++ b/limiter/service.go @@ -1,8 +1,8 @@ package limiter import ( - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" yaml "gopkg.in/yaml.v2" "time" ) diff --git a/logger/message.go b/logger/message.go index 34f9ea7..3cc2ad0 100644 --- a/logger/message.go +++ b/logger/message.go @@ -1,7 +1,7 @@ package logger import ( - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" "runtime/debug" ) diff --git a/logger/service.go b/logger/service.go index a78b95c..9d6f555 100644 --- a/logger/service.go +++ b/logger/service.go @@ -2,7 +2,7 @@ package logger import ( "fmt" - "github.com/actionpay/postmanq/common" + "github.com/Halfi/postmanq/common" yaml "gopkg.in/yaml.v2" "os" "path/filepath" diff --git a/logger/writer.go b/logger/writer.go index 60df1ae..063be17 100644 --- a/logger/writer.go +++ b/logger/writer.go @@ -11,7 +11,7 @@ type Writer interface { } // автор логов пишущий в стандартный вывод -type StdoutWriter struct{ +type StdoutWriter struct { // уровень логов, ниже этого уровня логи писаться не будут level Level } diff --git a/mailer/mailer.go b/mailer/mailer.go index f5df717..da8a61b 100644 --- a/mailer/mailer.go +++ b/mailer/mailer.go @@ -3,8 +3,8 @@ package mailer import ( "errors" "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "github.com/byorty/dkim" ) diff --git a/mailer/service.go b/mailer/service.go index d5def5c..d913c14 100644 --- a/mailer/service.go +++ b/mailer/service.go @@ -4,8 +4,8 @@ import ( "crypto/rsa" "crypto/x509" "encoding/pem" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" "github.com/byorty/dkim" yaml "gopkg.in/yaml.v2" "io/ioutil" diff --git a/recipient/recipient.go b/recipient/recipient.go index 36dc8aa..4d4b79c 100644 --- a/recipient/recipient.go +++ b/recipient/recipient.go @@ -1,7 +1,6 @@ package recipient import ( - "cmd/go/testdata/src/vend/x/vendor/r" "net" "net/textproto" ) diff --git a/recipient/service.go b/recipient/service.go index 1c62be6..80d44ba 100644 --- a/recipient/service.go +++ b/recipient/service.go @@ -2,8 +2,8 @@ package recipient import ( "fmt" - "github.com/actionpay/postmanq/common" - "github.com/actionpay/postmanq/logger" + "github.com/Halfi/postmanq/common" + "github.com/Halfi/postmanq/logger" yaml "gopkg.in/yaml.v2" "net" "strings" @@ -93,7 +93,7 @@ func (s *Service) run(hostname, mxHostname string, conf *Config, listener *net.T for { conn, err := listener.AcceptTCP() if err == nil { - events <- &Event{hostname, mxHostname, conn.RemoteAddr(), conn} + events <- &Event{serverHostname: hostname, serverMxHostname: mxHostname, clientAddr: conn.RemoteAddr(), conn: conn} } else { logger.By(hostname).Warn("recipient service - can't accept %s, error - %v", hostname, err) } diff --git a/recipient/state.go b/recipient/state.go index 67657c9..b3f7770 100644 --- a/recipient/state.go +++ b/recipient/state.go @@ -95,15 +95,12 @@ func (e *EhloState) Read(conn *textproto.Conn) StateStatus { if hostnameRegex.Match(line[ehloLen:]) { e.event.clientHostname = line[ehloLen:] } + return SuccessStatus } else if bytes.Equal(helo, line[:heloLen]) { - - } else { - return FailureStatus + return SuccessStatus } - } else { - - return FailureStatus } + return FailureStatus } func (e *EhloState) Write(conn *textproto.Conn) { @@ -123,7 +120,7 @@ type MailState struct { } func (m *MailState) Read(conn *textproto.Conn) StateStatus { - return nil + return FailureStatus } func (m *MailState) Write(conn *textproto.Conn) {