---
name: "NetSDS::App::SMTPD"
section: "3pm"
platform: "linux"
package: "libnetsds-perl"
version: "1.301-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/NetSDS::App::SMTPD"
---

# NetSDS::App::SMTPD(3pm)

## NAME

NetSDS::App::SMTPD

## SYNOPSIS

use NetSDS::App::SMTPD

## Packages

## NetSDS::App::SMTPD::Socket

Needs for work with socket. This module is a parent for  NetSDS::App::SMTPD and NetSDS::App::SMTPD::Client and a child of a NetSDS::APP

*ITEMS*

- **create\_socket**

  Creating a simple socket which could be transformed into a listening in NetSDS::App::SMTPD and could be used in NetSDS::App::SMTPD::Client for accept connection

- **can\_read**

  This method uses for making a timeout before connections to the server: if there is no connections to accept, program would be just waiting in select while the connection appeared.

- **close\_socket**

  Close socket

## NetSDS::App::SMTPD::Client

Provides the smtp protocol bu using Net::Server::Mail::SMTP. Had attributes: smtp - an object of Net::Server::Mail::SMTP, ip -  ip of the remote host, headers - ref hash with headers of a message,  msg - a body of a message.

*ITEMS*

- **set\_callback** and **process**

  All that subs do - its only call the methods of a Net::Server::Mail::SMTP with the same name.

- **get\_mail**

  In this sub we parse message and set headers of the object and message body. This sub is call as a  callback on event DATA

- **get\_header** and **get\_msg**

  Get methods that make you access to a header of a msg and message body. Example: `$client`-\>get\_header('FROM') or `$client`-\>get\_header('to');

## NetSDS::App::SMTPD

This module init a smtp-server.

*ITEMS*

- **create\_socket**

  Init a listening socket by creating a simple socket Super::create\_socket and make it listening.

- **data**

  Takes - a message that has been received, parses them and prepare  the structure of headers, body for next actions

- **accept**

  Waiting for an smtp connection and that accept it.

- **data**

  - **process**

  ## Example

```
        #!/usr/bin/env perl
        use strict;
        use warnings;
        Receiver->run(
                infinite  => 1,
                debug     => 1,
                verbose   => 1,
                conf_file => '../conf/mts-receiver.conf',
        );
        1;
        package Receiver;
        use base 'NetSDS::App::SMTPD';

        sub process {
                my $self = shift;
                my $client = $self->SUPER::process;
                #do something with msg;
                my $from = $client->get_header('from');
                my $msg = $client->get_msg;
                .....
                return $self;
        };
```

or you could reinit process like this:

```
        sub process {
                my $self = shift;
                my $client = $self->accept;
                return unless $client;
                $client->process;

                #do something
                ......
                $client->close;
                return $self;
        };
```

## AUTHOR

Yana Kornienko \<yana@netstyle.com.ua\>
