So by default, at least on the more recent versions of Fedora, CentOS, Ubuntu and FreeBSD that I've configured, most services seem ready out of the box for IPv6, mostly in a dual-stack default way.
Should already be set, which makes it listen on any address configured, IPv4 or IPv6. So if you only want it available on 1 IP, set it there.
inet_interfaces = all
inet_protocols = all
Since I run dual-stack, the second line makes it use both IPv4 & IPv6. First line I have that way by default, but would make sense if you've terminated a tunnel on your mail server and need that interface included.
This again has been dual-stack happy since by default it is configured to just listen on port 80 regardless of the IP. You can of course do the whole virtual-hosting, and configure like:
<VirtualHost x.x.x.x:80 [A:B:C:D::F]:80>
Where x.x.x.x is your IPv4 address and A:B:C:D::F your IPv6.
listen = [*]
listen = [::]
Again I run dual-stack so I want both configured. You can always lock it down to single IPs.
If anyone has more examples, please share!