# Postfix3 and MySQL support



## circus78 (Sep 27, 2017)

Hi,
I am using FreeBSD 11.1-RELEASE, I would like to stay with packages (no more ports, possibly).
I need postfix with MySQL support, it seems it is not present by default:


```
# postconf -m
btree
cidr
environ
fail
hash
inline
internal
memcache
pcre
pipemap
proxy
randmap
regexp
socketmap
static
tcp
texthash
unionmap
unix
```

I think I have forced to compile from ports. In the future, should I pay attention when using "pkg upgrade"?
Should I someway exclude postfix from binary upgrades?
Is there a better option?
Thank you


----------



## SirDice (Sep 27, 2017)

Options on packages are "set in stone" and cannot be changed once the package has been created. The only way to deviate from the default options is by building from ports.



> I would like to stay with packages (no more ports, possibly).


Alternatively, you can build your own repository. That way you get the best of both worlds.



> In the future, should I pay attention when using "pkg upgrade"?


Ports build packages and it's these resulting packages that eventually get installed. So in the end _everything_ is a package.


----------



## circus78 (Sep 27, 2017)

Hi SirDice, I admit I don't yet understand: what should I do to avoid pkg install newer postfix's version (from package repository), overwriting port compiled by me?
Thank you


----------



## SirDice (Sep 27, 2017)

circus78 said:


> what should I do to avoid pkg install newer postfix's version (from package repository), overwriting port compiled by me?


Basically, stop using pkg(8). You can use pkg-lock(8) to prevent it from being updated but I really don't recommend using it.

What I do recommend is setting up your repository using ports-mgmt/synth or ports-mgmt/poudriere. Then you're creating your own packages and can use your own default settings (like enabling MySQL for Postfix). If you point a machine's pkg(8) to your own repository it will get all the updates from your repository (which includes all the options you enabled/disabled).


----------



## rknetwork (Jan 10, 2019)

SirDice said:


> Basically, stop using pkg(8). You can use pkg-lock(8) to prevent it from being updated but I really don't recommend using it.



Stop using pkg? What kind of recommendation is this?
I strongly disagree, there is absolutely no need to use ports.

In the automated cloud virtual machines deployment you don't want to use something what consumes more resources (ports need more storage, CPU and Memory to compile).

I agree with circus78 there should be a package called postfix-sasl-mysql or something like that.


----------



## Remington (Jan 10, 2019)

rknetwork said:


> I agree with circus78 there should be a package called *postfix-sasl-mysql* or something like that.



Sure if you want to be the port maintainer for this project.  I see absolutely no need for it as I use ports-mgmt/poudriere to build my custom packages monthly.

Some packages can't include all the settings as it may have problems with other packages or dependencies.  FreeBSD packages are build with common default settings that most people use on their systems.  If you need specific settings such as sasl or mysql then the only recourse is to build customized ports or packages.


----------



## SirDice (Jan 10, 2019)

rknetwork said:


> Stop using pkg? What kind of recommendation is this?


You're taking the remark out of context. 


rknetwork said:


> I strongly disagree, there is absolutely no need to use ports.


If you read the rest you'll see I actually recommend setting up your own repositories, which includes using pkg(8) _and_ ports.


----------



## rknetwork (Jan 11, 2019)

Remington said:


> Some packages can't include all the settings


How about just including the most common settings instead?
MySQL and SASL sound like the must haves.


----------



## rknetwork (Jan 11, 2019)

SirDice said:


> If you read the rest you'll see I actually recommend setting up your own repositories, which includes using pkg(8) _and_ ports.


You're suggesting to buy a tank instead of fixing the car's window. This seems like an overkill solution.


----------



## Remington (Jan 11, 2019)

rknetwork said:


> How about just including the most common settings instead?
> MySQL and SASL sound like the must haves.



It's not my call to make. Most system administrators build their own packages due to many different settings.  Default settings are usually insufficient.  Building ports or packages are not that difficult.  Just type in the command to build the ports and go get a coffee, watch tv or go to bed if it takes a long time.  Poudriere build my customized packages which takes about 4 to 6 hours and its done automatically each month.  I have ZERO complaints.

What suppose if MySQL and SASL are set as default and what about those who wants PostgreSQL or SQLITE as defaults as well?  Having all databases support enabled will result in longer compile time, larger postfix files, more dependencies, increased chances of something breaking and more mess to deal with.  System admins are more interested in performance and not bloated software which Microsoft excels at.

I'm satisfied how the ports are configured.  If you don't want to bother building customized ports or packages then FreeBSD isn't for you.


----------



## SirDice (Jan 11, 2019)

rknetwork said:


> You're suggesting to buy a tank instead of fixing the car's window. This seems like an overkill solution.


Not exactly. You can spend a couple of minutes setting up the repositories and reap the benefits every time you update. Or you can spend countless hours mucking about with trying to upgrade ports in place, on each server, every time you upgrade. Using our own repositories I'm able to upgrade/update about 20 servers in a single afternoon. Building and updating the repositories happens at night, completely automated, on a weekly basis. I only have to check in the morning if everything built correctly.


----------



## rknetwork (Jan 11, 2019)

Thank you all for your responses, I have found a solution to this issue.

```
pkg install exim-mysql
```
For some odd reason, the maintainer of the exim package shares same vision as me and circus78 and NOT you guys.


----------

